在LINQ中使用带有Group Joins的where子句

时间:2012-03-11 23:45:05

标签: c# linq

我是LINQ的新手,但我不知道这段代码有什么问题。我想要的是将查询的结果存储在数组列表中,它给出了Exception:Index超出范围。必须是非负数且小于集合的大小。

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

     }

1 个答案:

答案 0 :(得分:0)

我认为使用View或USP(用户存储过程)更好,何时在.Net中使用USP会返回相同的数据磁带。