我在LINQPad中运行此查询.它的工作原理除了ProductSeries有重复的记录.
var query = from etaRecord in EtaRecord_0140 join productSeriesRecord in ProductSeries on etaRecord.ProductSeriesID equals productSeriesRecord.ProductSeriesID into productSeriesGroup from productSeries in productSeriesGroup.DefaultIfEmpty() where etaRecord.State == "A" select new { EtaRecord = etaRecord,ProductSeriesRecord = productSeries }; query.Dump();
我尝试使用FirstOrDefault()而不是DefaultIfEmpty(),但我收到此错误:
An expression of type ‘LINQPad.User.ProductSeries’ is not allowed in a
subsequent from clause in a query expression with source type
‘System.Linq.IQueryable’. Type inference Failed in
the call to ‘SelectMany’.
如何获取ProductSeries的FirstOrDefault(),以便每个EtaRecord只有一行?
.NET小提琴就在这里:https://dotnetfiddle.net/kRrold
解决方法
看起来你需要分组:
var query = from etaRecord in EtaRecord_0140 join productSeriesRecord in ProductSeries on etaRecord.ProductSeriesID equals productSeriesRecord.ProductSeriesID into productSeriesGroup from productSeries in productSeriesGroup.DefaultIfEmpty() where etaRecord.State == "A" group productSeries by new { etaRecord.ProductSeriesId,etaRecord } into g select new { EtaRecord = g.Key.etaRecord,ProductSeriesRecord = g.Select(x => x).FirstOrDefault() };
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。