加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 最后在LINQ列表中

发布时间:2020-12-15 20:13:14 所属栏目:asp.Net 来源:网络整理
导读:Context db = new Context();ListInvoice invoice =(from LocalInvoice in db.Invoiceswhere LocalInvoice.Site_Id == this.SiteIdentifierselect LocalInvoice).ToList(); 返回记录列表.我想选择列表中的最后一个. 我试过了.ToList().LastOrDefault(); 但是
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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读