有没有更简单的方法可以在Linq中编写此查询:

var prioritiy = db.Requirements.Where(r => r.ID == rowID).Select(r => r.Priority).First();

最佳答案

如果您用“更少的代码”来表示“更简单”,则您的自已答案已经是最紧凑的:

db.Requirements.First(r => r.ID == rowID).Priority;


如果您的意思是“更简单”,如“较少的数据库开销”,那么您的原始版本会稍微好一些:

db.Requirements.Where(r => r.ID == rowID).Select(r => r.Priority).First();


为什么?正如@IvanStoev在评论中指出的那样,LINQ执行被推迟到调用诸如First()之类的“完成”方法为止。如果在后端使用SQL,则第二个示例将转换为一条SQL语句,该语句仅从数据库中检索Priority字段,而第一个示例将检索匹配行的所有字段。

IMO坚决要进行不必要的微优化,除非这段代码运行了数百万次,或者整个数据库对象都有大量的列。除非您在做疯狂的事情,否则请使用您喜欢的样式!

关于c# - 使用LINQ从第一项检索属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39186886/

10-11 22:46
查看更多