2012-03-11 24 views
0

LINQの新機能ですが、このコードで何が問題なのか分かりません。私が望むのは、クエリの結果を配列リストに格納することです。それは例外:インデックスが範囲外です。負でなく、コレクションのサイズより小さくなければなりません。LINQのグループ結合でwhere句を使用する

   var JoinLCandSymp = 
      (from symp in SymptomsTable.AsEnumerable() 
       join leftC in LeftChestTable.AsEnumerable() on symp.Field<int>("Symptom_Number") equals leftC.Field<int>("Symptom_Number") into Sgroup 

       from SF in Sgroup 
       where SF.Field<int>("Rank") == 1 && SF.Field<string>("Category") == "Pain" 

       select symp.Field<string>("Symptom_Name") 

       ); 
     foreach (string val in JoinLCandSymp) 
     { 

      GlobalVariables.sympLCWR1Pain.Add(val); 

     } 

助けが本当に役に立ちます。 :)

これは別の同じ手順です...これには何が問題なのでしょうか?同じ例外が発生します。私がより良いと思う

  var JoinLCandSymp = 
     (from symp in SymptomsTable.AsEnumerable() 
      join leftC in LeftChestTable.AsEnumerable() on symp.Field<int>("Symptom_Number") equals leftC.Field<int>("Symptom_Number") 
      where leftC.Field<int>("Rank") == 1 && leftC.Field<string>("Category") == "Pain" 
     // group leftC by symp into SympGroup 
      select symp.Field<string>("Symptom_Name") 

      ); 
    foreach (string val in JoinLCandSymp) 
    { 

     GlobalVariables.sympLCWR1Pain.Add(val); 

    } 
+0

私は、データセットにデータを入力するSQLを見る必要があります。しかし、それがなければ、何かはnullです:Rank、Category、またはSympton_Number。列にアクセスしようとすると、失敗しています。 – Joe

+0

SymptomsTableには、LeftChestTable..RankとCategoryは、LeftChestTableの列です.Symptom_Numberは、SymptomsTableとLeftChestTableの列です。問題なく列にアクセスできます。 –

+0

私はそれを得ました。 ...後者のコードは現在動作しています.iは静的な配列リストを使用していました。静的なものを使用しなければならなかったクラスです。pythanksとにかく –

答えて

0

は、あなたがネットでUSPを使用しないときは、データの同じテープを返すか、ビューまたはUSP(ユーザストアProcedore)を使用しています。

+0

私はADO.netのビットと一緒にlinqを使用する必要があります –