2017-02-17 215 views
1

我有一個自定義類型,我填充了兩個表中的數據。我試過以下加入兩個表,這通常工作。但該集團由和計數導致錯誤:c#實體框架組通過加入

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(); 

這是目前給錯誤:

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

但如果我刪除:

Quantity = i.Item.ItemName.Count() 

查詢運行正常。

回答

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(); 

基本上你創建翻出要彙總數據的查詢,然後對它進行分組,然後您可以應用聚合,如count。

幾個祕訣 -

  • 記住,你不必做,在一個查詢,可以嘗試較小的更易於分裂理解
  • 嘗試LinqPad,因爲這是很好的測試類的東西這 (www.linqpad.net)
+0

我曾嘗試使用類似分組:第一組由i.Item.ItemName爲G ....但我不能獲得連接表到所選擇的對象 –

+0

隨着出知道所有的表格結構,這很難但我會舉一個例子。 – SpaceUser7448

+0

好的謝謝,基本上我有訂單表(orderid,名稱...),加入order_items(itemId,itemName ....)我試圖按名稱上的訂單項分組,並添加計數。但也希望select中的訂單表的一些信息。 –