2016-04-16 19 views
1

SQLデータベースにはフォールトコードの所有者が含まれていません。これらの詳細はXMLファイルに格納されています。FaultCodeOwnerは外部ソースからデータを受け取ったときにグループ化できますか?C#Linq Assign GroupByの匿名タイプ

私は次のエラーを取得する:あなたが第1のメモリにクエリの結果をもたらすことなく、データベースに存在しないものでグループすることはできません

 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の型の変数を宣言してから、outパラメータとしてgetFacultCodeOwnerに渡す必要があります。これにより代入されます。

+0

Ignausガイダンスをありがとう。出来た。しかし、私はFaultCodeOwnerType faultCodeOwner;を削除しなければならなかった。しかし、いったんやりましたが、私はそれが欲しいのと同じように機能しました。 – EMIE

2

匿名型のプロパティに空白を割り当てることはできません。

Whereメソッドの後にToEnumerableまたはToListを挿入すると、それが実行されます。残念ながら、そうでない場合よりも多くのデータをメモリに保存することができます。