asp.net – 最后在LINQ列表中

前端之家收集整理的这篇文章主要介绍了asp.net – 最后在LINQ列表中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Context db = new Context();
List<Invoice> invoice =
(from LocalInvoice in db.Invoices
where LocalInvoice.Site_Id == this.SiteIdentifier
select LocalInvoice).ToList();

返回记录列表.我想选择列表中的最后一个.
我试过了.ToList().LastOrDefault();
但是错误im get不能将类型“invoice”转换为“System.Collections.Generic.List”.

为什么说这个没有将发票作为列表列出列表<发票>发票

任何帮助非常感谢.

编辑
感谢您的回复,我已经尝试了所有建议,并且每次收到错误查询运算符“LastOrDefault”不受支持.

另外,我实际上没有解释我正在努力做什么,这可能是一个问题.
我有一张包含所有发票的表,每个发票都有一个单独的’id’.然而,每个记录将有一个SiteIdentifier列,该列用于不同的发票多次.
因此,每个网站可能有多个发票.

试图获得最新的Invoice网站.
所以说发票

id SiteIdentifier 
73 25
74 25
75 25

我试图获取SiteIdentifier == this.SiteIdentifier(例如25)的所有记录,然后获取最新的记录,该记录将具有发票id 75.

任何人都有什么想法?
再次感谢所有的帮助

解决方法

LastOrDefault将返回单个元素.您不应该首先调用ToList而不应用过滤器,当您只需要一个时,它将从数据库中检索所有行.
var invoice = db.Invoices.LastOrDefault(s => s.Site_Id == this.SiteIdentifier);

另外,如果要查询关系表,则必须应用订购. LastOrDefault只对内存中的集合有意义.看起来它在EF中不受支持,并会抛出异常.

最佳解决方案是反序排序和使用FirstOrDefault方法

var invoice = db.Invoices.OrderByDescending(s => s.Id) 
                         .FirstOrDefault(s => s.Site_Id == this.SiteIdentifier);

猜你在找的asp.Net相关文章