1

linq を使用して、DB に行が存在するかどうかを確認したい。true\false の戻り値が必要なだけで、データはありません。私はエンティティを持っていないため(そしてそれを必要としないため)、ExecuteQueryメソッドを使用できません。次のようなことを考えました:

string command = "select * from myTable where X=Y"
var result = db.ExecuteCommand(command);

(db は私の DataContext です)、影響を受ける行の数が結果に含まれることを期待していました。-1 と異なる場合は、探しているレコードが存在することを意味します。しかし、私は常に-1を取得します。ExecuteCommand メソッドは、挿入、更新、または削除を実行するためにのみ使用する必要があると思います。

linqを使用してこの簡単なチェックを実行するにはどうすればよいですか

4

4 に答える 4

5

Any()演算子を使用できます。IEnumerable呼び出されたまたはIQueryableに少なくとも 1 つのアイテムがある場合 (つまり、アイテムがある場合)、true を返します。

于 2012-08-13T16:18:56.593 に答える
2

がデータ コンテキストである場合dbは、次のようにする必要があります。

bool rowExists = dc.GetTable<myTable>().Any(row => row.X == row.Y);

一般に、LINQ to SQL (および Entity Framework) では、SQL コードを直接記述することはほとんどありません。

于 2012-08-13T16:19:58.747 に答える
0

交換

select *

select count(*)
于 2012-08-13T16:18:54.243 に答える
0

SELECT COUNT(*) FROM myTable WHERE X=Yおそらく実行して、返された単一のレコードがゼロに等しいかどうかを確認する方がよいでしょう

于 2012-08-13T16:19:52.627 に答える