2013-10-09 65 views
0

我有一個差異類型的2個集合。我想匹配那些集合中的字符串並返回不匹配的集合。如何匹配2差異收集中的字符串並返回在LINQ中不匹配的收集項目

1) ac_CategoryList 
2) mw_CharityList 

想匹配,如果ac_CategoryList .title僞有在mw_CharityList.EntryTitle。如果它不存在,則返回不匹配的收集項目ac_CategoryList。並返回多個與ac_CategoryList.Title匹配的mw_CharityList類型的集合。因爲我需要更新mw_CharityList集合中的狀態。

var var charityList = _db.mw_CompetitionsEntry.Where(e => e.IsInvalid == false && e.IsPublished).ToList(); // first get the entire valid collection 
var categoryList = _db.ac_Category.Where(c => c.Title != null && c.IsDeleted == false).ToList(); // get the entire valid collection 

var titleNotExitsCollection = categoryList.Where(c => charityList.Any(e => e.EntryTitle.Trim() != c.Title.Trim())).ToList(); 
var titleExitsCollection = charityList.Where(e => categoryList.Any(c => c.Title.Trim() == e.EntryTitle.Trim())).ToList(); 

現在titleNotExitsCollection和titleExitsCollection返回相同的記錄數。我不知道我做錯了......請幫

回答

1
var commonTitles = categoryList.Select(x=>x.Title.Trim()) 
           .Intersect(charityList.Select(x=>x.EntryTitle.Trim())); 
var titleNotExitsCollection = categoryList.Where(x=>!commonTitles.Contains(x.Title)) 
              .ToList(); 
var titleExitsCollection = charityList.Where(x=>commonTitles.Contains(x.EntryTitle)) 
             .ToList(); 
+0

這一個爲我工作.... –

2

貌似有一個不缺少操作,嘗試:

var titleNotExitsCollection = categoryList.Where(c => !charityList.Any(e => e.EntryTitle.Trim() == c.Title.Trim())).ToList(); 
+0

編輯的...這是一個錯字,它沒有工作.... –

+0

+1 - 小巧簡潔,不知道如果任何一個列表包含它們,nuuls將如何工作 –

相關問題