2014-10-06 117 views
2

我有2個具有不同實體的集合。如何從他們1獨特的數據收集(公司名稱&產品名稱& certId)。檢查集合是否包含具有特定屬性的元素

我嘗試的是: 第一個集合我迭代循環並檢查第二個集合是否包含具有相同certId,productName和companyName的元素。但我不確定我是否做得很好。

如果元素不包含,我需要添加它。

releases.ForEach(
      r => 
      { 
       if (!ratings.All(x => 
        x.certID == r.certID && x.companyNameWhenRated == r.companyNameOnStore && 
        x.productNameWhenRated == r.productNameOnStore)) 
       { 
        ratings.ToList().Add(new uRating 
             { 
              certID = r.certID, 
              productNameWhenRated = r.productNameOnStore, 
              companyNameWhenRated = r.companyNameOnStore, 
              uCert = r.uCert, 
              rAgeRating = r.uCert.uRatings 
               .Where(u => u.certID == r.certID 
                  && u.productNameWhenRated != r.productNameOnStore 
                  && u.companyNameWhenRated != r.companyNameOnStore) 
               .Select(ur => ur.rAgeRating).First() 
             }); 
       } 
      }); 
+1

爲什麼你不確定它是否好?你有沒有試過運行它?有錯誤嗎?意外的行爲? – 2014-10-06 16:18:09

+0

創建一個方法bool HasSpecificProperties(object o);然後檢查像這個collection.Any(HasSpecificProperties) – 2014-10-06 16:21:43

+0

@eddie_cat,我從數據庫中獲得的每個集合。 「發行版」有2個元素和「評級」 - 17個元素,這些元素並不相同。因此,在此操作之後,我期望在集合中包含19個元素 – demo 2014-10-06 16:22:57

回答

1

if (!ratings.All(...))表示所有的評級必須與發佈相匹配,這不是你想要的。使用if(!ratings.Any(...))這意味着任何評分都必須與發佈相匹配。

+0

謝謝,我認爲這有助於 – demo 2014-10-07 09:37:26