有没有更简单的方法可以在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/