2016-04-16 67 views
1

我的sql數據庫不包含錯誤代碼所有者,這些細節存儲在一個xml文件中當數據來自外部源時,Groupby FaultCodeOwner是否可能?C#Linq Assign Anonymous Type in GroupBy

我得到以下錯誤:無法分配無效匿名類型屬性

 var query = referenceDt.AsEnumerable() 
      .Where(results => declarations.CaapcityIssues.Contains((results.Field<string>("FabricName")))) 
      .GroupBy(results => new 
      { 
       **FaultCodeOwner = faultCodeDetails.getFacultCodeOwner(results.Field<int>("FaultCode"), out owner)** 
      }) 
      .OrderBy(newFaultCodes => newFaultCodes.Key.FaultCodeOnwer) 
      .Select(newFaultCodes => new 
      { 
       FaultCodeOwner = newFaultCodes.Key.FaultCodeOwner, 
       Count = newFaultCodes.Count() 
      }); 

回答

1

更改GroupBy方法是:

.GroupBy(results => 
{ 
    FaultCodeOwnerType faultCodeOwner; // rename FaultCodeOwnerType to the type of FaultCodeOwner 
    faultCodeDetails.getFacultCodeOwner(results.Field<int>("FaultCode"), out faultCodeOwner); 
    return new 
    { 
     FaultCodeOwner = faultCodeOwner 
    }; 
}) 

faultCodeDetails.getFacultCodeOwner回報void,所以你不能一個變量分配給它。您必須首先聲明FaultCodeOwner類型的變量,然後將其作爲輸出參數傳遞給getFacultCodeOwner,該參數將爲您分配它。

+0

感謝Ignaus的指導。有效。但是,我不得不刪除FaultCodeOwnerType faultCodeOwner ;.但是一旦我做了,它就像我想要的那樣工作。 – EMIE

2

您無法通過任何不是在數據庫中不首先把你的查詢結果在內存組。

在Where方法之後插入ToEnumerable或ToList會做到這一點。不幸的是,你可能會在內存中帶來更多的數據。