2つのint値を保持するリストを作成したいとしますarrfirst
とarrfirst
のリストを保持する別のリストは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ループでtemp
はEklenenler
リストにありますが、常にif
ブロックに入ります。たとえば、最初のループはtemp[0]=36
、temp[1]=42
はブロックの場合と2番目のループのときに再びtemp[0]=36
とtemp[1]=42
とEklenenler[0][0]=36
とEklenenler[0][1]=42
と表示されますが、それにはtempが含まれていますがどうしてこの問題が解決できますか?このtemp
をEklenenler
に記載してください。ありがとうございました。あなたはこの
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でそれを行うことができ
'if(row.SequenceEquals(anotherRow))'? –