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'のすべての列:そのIDで最大1人の顧客がありますので
または同等
:に来る
「ShipTo」とは別のものは矛盾のように聞こえる。 – tinudu