我在LINQPad中运行此查询。它的工作原理除了ProductSeries有重复的记录。LINQ外部连接有重复
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'.
我怎样才能获得FirstOrDefault()
为ProductSeries以便有只有一排每个EtaRecord?
.NET小提琴是在这里:https://dotnetfiddle.net/kRrold
左外连接可以返回重复,展示一下你期待的,什么是当前输出 – 2015-02-24 14:36:24
查询当前不包含重复项,所以我无法显示错误的输出。问题是数据可能会改变,并且将来会有重复。我需要防范这一点。我只需要每个etaRecord一行。那个etaRecord可以有一个空的ProductSeries,或者只有一个ProductSeries,即使有多个。 – 2015-02-24 14:56:28
在我的文章中添加了.NET小提琴链接。 – 2015-02-24 16:38:43