如何在单个LinQ查询中编写OrderByDescending和where子句

时间:2018-12-11 08:02:56

标签: c# linq

我想显示特定UpdateDevice的最新DeviceId值。使用OrderByDescendingWhere编写LinQ查询时,出现错误

  

无法执行文本选择:CS1061'int'不包含   'OrderByDescending'的定义,没有扩展方法   接受类型为“ int”的第一个参数的“ OrderByDescending”可能是   找到

数据类型

Id - int32
UpdatedDate- datetime

LinQ

from a in Attendances
where a.DeviceId == 1 
.OrderByDescending(x=>x.Id)
.Take(1)
select a.UpdatedDate

1 个答案:

答案 0 :(得分:5)

您需要为您的谓词加上括号,即where子句。

完全使用查询语法或lambda表达式。以下应该起作用:

FROM letsdoit/baseimage
.
.
COPY ./temp2.sh /sbin/entrypoint.sh
ENTRYPOINT ["/sbin/entrypoint.sh"]
CMD ["start-service"]

或使用lambda表达式语法:

(from a in Attendances
where a.Deviceid == 1 
select a)
.OrderByDescending(x=>x.Id)
.Take(1)
.Select(x=>x.UpdatedDate)

旁注:

如果打算退回单个物品,则可以使用Attendances.Where(a => a.Deviceid == 1) .OrderByDescending(x=>x.Id) .Take(1) .Select(a => a.UpdatedDate); FirstOrDefault(),以了解两者的区别:

First()