1

使用 linq,我想检查数据库上是否存在一行。我只需要一个 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它至少有一个项目(即它有任何项目),它将返回true 。

于 2012-08-13T16:18:56.593 回答
2

如果db是您的数据上下文,您应该这样做:

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

通常,使用 LINQ to SQL(和实体框架),您很少希望直接编写 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 回答