我需要返回Customers
中与列ShipTo
不同的记录的所有列。我试着用Distinct()
此查询,但它返回重复记录:Linq查询返回基于不同列值的整个行
var query = (from o in Orders
from c in Customers
where (from x in CustomerOrders
where x.CustomerId == customerId
&& !x.OrderType.Equals('A')
select x.OrderId).Contains(o.OrderId)
&& c.CustomerId == customerId
&& c.ShipTo == o.ShipTo
&& !o.OrderStatus.Equals('C')
select c).Distinct();
我又试图改写使用Group By
和First()
查询。我没有收到任何语法错误,但查询在使用LinqPad进行测试时会引发异常。
var query = (from o in Orders
from c in Customers
where (from x in CustomerOrders
where x.CustomerId == customerId
&& !x.OrderType.Equals('A')
select x.OrderId).Contains(o.OrderId)
&& c.CustomerId == customerId
&& c.ShipTo == o.ShipTo
&& !o.OrderStatus.Equals('C')
group c by c.ShipTo into g
select g.First());
“全部'Customer'列但通过“ShipTo”截然不同“听起来像是一个矛盾。 – tinudu