2012-05-22 51 views
1

我按照這個模型建立一個ASP.NET MVC 3應用程序,在那裏我有自定義對象的名單:ASP.NET MVC 3比較2只列出與模型對象的重複

public class AbnAmroTransaction 
{ 
    public int TransactionId { get; set; } 
    public int AccountNumber { get; set; } 
    public string Currency { get; set; } 
    public int TransactionDate { get; set; } 
    public int InterestDate { get; set; } 
    public decimal StartBalance { get; set; } 
    public decimal EndBalance { get; set; } 
    public decimal Amount { get; set; } 
    public string Description { get; set; } 
    public int CategoryId { get; set; } 
} 

我也有第二個列表與自定義對象類型的「交易」略有相似的對象(這是我從使用DBML我的SQL Server 2008數據庫中獲取):

Transaction LinqToSql Object 

int TransactionId 
int ImportId 
int CategoryId 
DateTime DateTime 
Nvarchar(MAX) Currency 
Money Amount 
Nvarchar(MAX) Description 

我試圖創建一個包含所有AbnAmroTransactions一個第三列表,其中AbnAmroTransaction.TransactionId不在事務列表中(Transac tionId)。我如何做到這一點,而不必循環兩個列表,這似乎是一個非常有效的方法來做到這一點?

我發現這篇文章: http://msdn.microsoft.com/en-us/library/system.collections.iequalitycomparer.equals.aspx 但這似乎只適用於相同類型的對象。

+0

我設法通過將所有AbnAmroTransaction對象強制轉換爲事務,然後爲事務創建自定義IEQualityComparer來修復它! :) 多謝你們! – Erwin1441

回答

3

如果您使用linq,然後看看Except

var list1 = new List<int>() {1,2,3,4,5}; 
var list2 = new List<int>() {4,5,6,7}; 
var newList = list1.Except(list2); 

新的列表將包含{4,5}

但是,你必須任何一些支票事務ID第一。

+0

我認爲列表的類型是不同的(自定義對象類型vs原始類型)。所以我認爲這不可行。 – dcp

+2

dcp,也許你應該用IEqualityComparer實現你的類? http://msdn.microsoft.com/en-us/library/bb336390.aspx – Codeman