2012-10-13 61 views
1

可能是我的問題很常見。我在這裏看到它Comparing Two collections。但我想比較兩個複雜的集合。使用Linq比較複雜集合

public class Project 
{ 
    public Int32 ProjectID { get; set; } 
    public String ProjectName { get; set; } 
    public String ProjectCode { get; set; } 
} 
public class Unit 
{ 
    public Int32 UnitID { get; set; } 
    public Int32 ProjectID { get; set; } 
    public String UnitName { get; set; } 
    public String UnitCode { get; set; } 
} 

這裏項目和單位有一個叫做ProjectID一個共同的領域。而我有項目和單位的集合。對應於項目集合中的每個項目,單元集合中都有一個單元。並且單元集合中的​​某些單元不屬於項目集合中的任何項目。我想過濾掉這些單位。我如何使用Linq來做到這一點。

+0

下面引用會給你相當不錯的主意,如何比較複雜的集合:1. [自定義泛型比較收藏] [1] 2. HTTP ://stackoverflow.com/questions/50098/comparing-two-collections-for-equality [1]:http://www.codeproject.com/Articles/16829/Custom-Generic-Compare-For-Collection –

回答

2

你可以使用LINQ:

var result = units.Where(u => projects.All(p => p.ProjectID != u.ProjectID)); 
+0

謝謝Cuong Le – amesh

+0

請注意一些支架不匹配 – amesh

+0

@amesh:編輯我的答案 –

1
from u in unitCollection 
from p in projectCollection 
Where p.ProjectID == u.ProjectID 
select u