LinqPad でクエリを実行すると、奇妙な動作が発生することがわかりました。一部の ASCII 記号/文字は、実際には等しくない場合でも、LinqToSQL によって等しいと見なされるようです。
次のクラスを考えてみましょう (対応するテーブルを使用)。
public class SpecialCharacter
{
int Id;
string Character;
string Name;
}
テーブルに「⇒」(右矢印) と「⇐」(左矢印) の行を追加すると、次のクエリはそれらが等しいことを示します (結果には 2 つの項目が含まれます)。
var result = from a in SpecialCharacters
from b in SpecialCharacters
where a.Character == b.Character && a != b
select new {A = a, B = b};
.ToList() への呼び出しを追加してクエリを変更すると、期待どおりの動作になります (結果は空です)。
var result = from a in SpecialCharacters.ToList()
from b in SpecialCharacters.ToList()
where a.Character == b.Character && a != b
select new {A = a, B = b};
これがどのように起こるかについてのアイデアはありますか?