我想要算一下这个:
Model.Version.Where(model => model.revision != Model.revision).Count();
Run Code Online (Sandbox Code Playgroud)
但它在VS中告诉我,我不能使用Lambda表达式.
该模型的类型为Documents,它与Version相关联.
我需要版本表中任何文档的计数,用于修订版大于模型修订版的模型文档.
这将是0或1,有时可能高于1我想.
我究竟做错了什么?
if (Model.Version.Where(model => model.revision > Model.revision).Count() > 0)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,你的真实代码应该没问题:听起来问题只是你试图在调试器而不是普通代码中执行它.就个人而言,我总是对尝试在调试器中取得太多东西感到有些怀疑 - 当然它可能很有用,但如果事情出乎意料地行事,我总会看到相同的代码是否作为真实程序的一部分工作,而不是假设这种方法存在根本性的错误.调试器必须在与正常编译和执行过程相当不同的约束下工作.
同样,正如其他人所说,使用它Any()比使用更好Count() > 0.但是,更干净的是使用Any接受谓词的重载:
if (Model.Version.Any(model => model.revision > Model.revision))
{
...
}
Run Code Online (Sandbox Code Playgroud)
但请注意,这与初始谓词不完全相同,后者要求任何版本具有不同的版本而不是更高版本.你可能想要:
if (Model.Version.Any(model => model.revision != Model.revision))
{
...
}
Run Code Online (Sandbox Code Playgroud)
值得注意的是,在LINQ to Objects中,使用Any可以比使用具有非常真实的性能优势Count() > 0.在该查询转换为不同的形式(例如SQL)可能没有提供性能好处,但有一个清晰的利益究竟在说什么你感兴趣的-你并不真正关心的计数,你只关心有任何匹配的项目.
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |