Each person makes one true statement and one false statement.
If A did it:
I was not
is FALSE
B did it
should be TRUE but is FALSE
If A committed the crime, then both of A's statements are false. This contradicts the rules of the riddle.
If A didn't do it:
I was not
is TRUE
B did it
should be FALSE.
At this time, we cannot confirm or deny this statement.
If B did it:
I was not
is FALSE
I know that C did it.
should be TRUE but is FALSE
Much like A, B cannot give two false statements. If B committed the crime, then B would know that B did it, thus making the second statement false.
If B didn't it:
I was not
is TRUE
I know that C did it.
should be FALSE
Again, we don't entirely know if B's second statement is false or not.
If C did it:
I was not
is FALSE
B do not know who was it.
is TRUE
Ok, so this is where things get interesting. If C is responsible, that we know that the second statement is true. That also means that the second case for B needs to be true as well. This means that B doesn't know who did it.
NOTE
This does not mean that it isn't C. It only means that B doesn't know C did it. He's just a lucky guesser, that's all.
This also means that A's second case should become true as well. A stated that B did it. We know, in this case, that is false. This means that 'A didn't do it' works out logically.
If C didn't do it:
I was not
is TRUE
B do not know who was it.
could be TRUE
Obviously C's claim of innocence is true. This means that C's statement that B is wrong must be FALSE. If that is the case, then B must be telling the truth on that line and lying on the first. We have already logically concluded that is contradictory and as such impossible.
Therefore, the only logically valid statement of the six above is C did it