2017-03-31 13 views
0

2つのint値を保持するリストを作成したいとしますarrfirstarrfirstのリストを保持する別のリストはarrsecondとなります。arrsecondに定義arrfirstと定義される。今私はリストを作成しましたが、私が.Containsを使用しようとするとうまくいきません。リストのリストに別のリストが含まれているかどうかを確認する方法

List<List<int>> Eklenenler = new List<List<int>>(); 

for (int i = 0; i < YourTable.Rows.Count; i++) 
     { 
      prjAd = YourTable.Rows[i].Field<string>("F1"); 
      if (prjAd != "Servis Adresi") 
      { 
       wesAd = YourTable.Rows[i].Field<string>("F2"); 
       RowPrj = tbProjeler.AsEnumerable().Where(r => r.Field<string>("prjAd") == prjAd).FirstOrDefault(); 
       RowWes = tbServisler.AsEnumerable().Where(k => k.Field<string>("wesAd") == wesAd).FirstOrDefault(); 
       prjId = RowPrj.Field<int>("prjId"); 
       wesId = RowWes.Field<int>("wesId"); 
       List<int> temp = new List<int>(); 
       temp.Add(prjId); 
       temp.Add(wesId); 
       if (!Eklenenler.Contains(temp)) 
       { 
        sqlExProjeEkle = "INSERT INTO NLK_PRJ_Webservisler (prjId,wesId) Values (" + prjId + "," + wesId + ")"; 
        dco.Execute(sqlExProjeEkle); 
        Eklenenler.Add(temp); 

       } 
       else 
       { 

       } 
      }             
     } 

これは私のコードです。私がデバッグするとき、私はtempの値が正しいことを見ることができ、また第2ループでtempEklenenlerリストにありますが、常にifブロックに入ります。たとえば、最初のループはtemp[0]=36temp[1]=42はブロックの場合と2番目のループのときに再びtemp[0]=36temp[1]=42Eklenenler[0][0]=36Eklenenler[0][1]=42と表示されますが、それにはtempが含まれていますがどうしてこの問題が解決できますか?このtempEklenenlerに記載してください。ありがとうございました。あなたはこの

if (!Eklenenler.Any(c => c.SequenceEqual(temp))) 
{ 
    sqlExProjeEkle = "INSERT INTO NLK_PRJ_Webservisler (prjId,wesId) Values (" + prjId + "," + wesId + ")"; 
    dco.Execute(sqlExProjeEkle); 
    Eklenenler.Add(temp); 

} 
else 
{ 

} 

のようなものを持つだけで1行にLINQでそれを行うことができ

+1

'if(row.SequenceEquals(anotherRow))'? –

答えて

1

using System.Linq; 
0

を追加することを忘れないでくださいここでは、foreachループを使用しての答えです。

foreach (List<int> list in Eklenenler) 
{ 
    if (list.SequenceEqual(temp)) 
    { 
     //Do work 
    } 
} 
関連する問題