2017-02-17 15 views
1

私は2つのテーブルのデータで塗りつぶすカスタムタイプを持っています。私は次の2つのテーブルを結合しようとしましたが、これは通常動作します。私は削除する場合c#Entity Framework Group結合で

{"DbExpressionBinding requires an input expression with a collection 
               ResultType.\r\nParameter name: input"} 

:しかししかし、グループによると、カウントがエラーを引き起こしている:

public List<sLoadingList> GetOrdersforLoadingByWard(string _mywCode, DateTime _orderDate, int _periodId) 
{ 
    var _formattedDate = _orderDate.Date; 
    List<sLoadingList> query = (from o in CateringEntities.Orders 
           join i in CateringEntities.OrderItems 
           on o.OrderId equals i.OrderId 
           where o.LocationsLookUp.WardCode.Equals(_mywCode) && 
           DbFunctions.TruncateTime(o.Date) == _formattedDate && o.Period == _periodId 
           select new sLoadingList() 
           { 
            ItemId = i.ItemId, 
            ItemName = i.Item.ItemName, 
            ItemType = i.ItemType, 
            Quantity = i.Item.ItemName.Count() 
           }).GroupBy(i => i.ItemId).Select(i => i.FirstOrDefault()).ToList(); 
    return query.ToList(); 

これは、現在のエラーを与えている

Quantity = i.Item.ItemName.Count() 

クエリは、[OK]を実行します。

答えて

1

基本的には、まだグループ化していないデータセットに対して集計(Count())を使用しようとしています。

ItemId、ItemName、ItemTypeでグループ化してから、Count()を含むセクションを選択してみてください。すべてのテーブルなどを見ることなく、正確な答えを与えるが、このような何かをしようとするのは難しいです

私がコメントしたよう、 -

List<sLoadingList> query = 
(
    (
     from o in first 
     join i in second 
     on o.OrderId equals i.OrderId 
     where ... some condition ... 
     select new sLoadingList() 
     { 
      ItemId = i.ItemId 
      , ItemName = i.Item.ItemName 
      , ItemType = i.ItemType 
     } 
    ) 
    .GroupBy(i => i.ItemId) 
    .ThenBy(i => i.ItemName) 
    .ThenBy(i => i.ItemType) 
    .Select(i => new {KeyData = i.Key, Cnt = i.Item.ItemName.Count()}) 
) 
.GroupBy(i => i.KeyData.ItemId) 
.Select(i => i.FirstOrDefault()) 
.ToList(); 

基本的にあなたが集計するデータを引き出すクエリを作成し、それをグループ化し、集計などの集計を適用することができます。

ヒントのカップル -

  • これはのようなテストのもののために良いですとしてLinqPadを試してみてくださいを理解するのが容易である小さいものに分割してみてください、あなたは1つのクエリでそれを行う必要はありません覚えておいてくださいこの (www.linqpad.net)
+0

私のようなものを使用してグループ化してみました:グループIはi.Item.ItemNameによってグラムに....しかし、私はアウトで選択したオブジェクト –

+0

に結合されたテーブルを取得couldntのすべてのテーブル構造を知ることは難しい私は一緒に例を挙げます。 – SpaceUser7448

+0

私はorder_items(itemId、itemName ....)に結合する注文表(orderid、name ...)を持っています。私は名前の項目を注文して集計しようとしています。しかし、selectのordersテーブルの情報も必要です。 –

関連する問題