2017-06-15 62 views
-3

我是新來CSHARPC#如何檢查對象在列表中已經存在,如果列表中有多個項目

我有一個包含多個元素的列表。在將列表對象添加到列表之前,我想檢查列表中是否存在該對象。

下面我給出了列表中有7個元素的樣本列表,但我原來的要求在列表中有超過20個元素。

這就是爲什麼我想比較列表對象,並檢查它是否存在。

我試過Contains(),LINQ,FINDALL()。沒有工作。

我有一個非常大的數據集。

樣品: 這是我的名單:

public class taxDetails 
{ 
    public string record { get; set; } 
    public string UpdateCd { get; set; } 
    public string EffDt { get; set; } 
    public string TermDt { get; set; } 
    public string TransCd { get; set; } 
    public string Id { get; set; } 
    public string Type { get; set; } 
} 

我想要做這樣的事情:

taxDetails ti = new taxDetails(); 

taxDetails.Add(ti); 

這應該僅當對象「TI」加入是不是已經在名單。 我希望它比較所有7個元素,並確定天氣對象是否存在。

+1

哪裏是在'taxDetails'類的'Add'方法的實現? – dcg

+2

你顯示的不是一個清單,而是一個類。一個列表看起來像這樣:'var taxDetailsList = new List ();' –

+1

如果你的代碼錯了,你真的把它添加到列表中,每個'new()'實例都是新的,所以它不能是在列表中。 – Gusman

回答

0

我試了下面,它的工作。

List<Tuple<string>> test = new List<Tuple<string>>() 
     { 
      new Tuple<string>("dfsg"), 
      new Tuple<string>("dfgfd"), 
      new Tuple<string>("sdfdsfsdf"), 
      new Tuple<string>("123") 
     }; 
     var contians = test.Contains(new Tuple<string>("123")); 

如果我不得不猜測它,因爲你沒有重寫等式方法。

public override bool Equals(
object obj) 

嘗試實現該功能,例如像下面這樣:

return this.field1 == obj.field1 && this.field2 == obj.field2 etc

+0

我有15個不同的List在我的課上,每個都有不同的數據元素集。在那種情況下,我該如何重寫Equals方法? – kavita

+0

正如我上面所述。 public override bool Equals(object obj) 返回this.field1 == obj.field1 && this.field2 == obj.field2; } 默認情況下,Equals方法比較複雜類型的指針,比如對象。因此,爲了確定你的對象是否在列表中,你需要比較它。爲了比較它,你需要重寫equals方法。 – Nicolas

相關問題