2012-04-24 82 views
2

我正在使用MVVM模型的WPF應用程序。我想知道如何比較兩個IEnumerable集合值 。我有兩個IEnumerable值,命名爲 AvailablePacksRecommendedPacks。這兩個集合具有不同的值集合,但它們具有共同屬性PackID值。 AvailablePacks具有另一個屬性,名稱爲數量如何使用LINQ比較兩個IEnumerable集合

現在我想比較這兩個IEnumerable集合值基於PackID 值,當兩個集合有相同PackID我需要分配一個數量(內部AvailablePacks的)價值,有的叫變量PackQuantity在外部聲明。

我是LINQ的新手所以我無法做到這一點。

所以我怎麼能做到這一點?任何人都可以告訴我一個解決方案嗎?

謝謝。

+0

你的問題不是很清楚 - 尤其是當它涉及到喜歡的東西「PackQuantity它對外宣稱」 - 宣佈外面是什麼? – 2012-04-24 10:56:21

+0

問題並不清楚 - 集合如何具有一個「PackID」值? – Oded 2012-04-24 10:57:58

+0

它在方法之外聲明。這兩個集合中都不存在 – SuryaKavitha 2012-04-24 10:59:09

回答

5
var result = from ap in AvailablePacks 
      join rp in RecommendedPacks 
       on ap.PackID equals rp.PackID 
       select new { 
        PackQuantity = ap.Quantity 
       }; 
+0

它的工作......謝謝你yar ... – SuryaKavitha 2012-04-24 11:15:37

+0

我們如何使用LamdaExpression? – SuryaKavitha 2012-04-24 12:58:24

+0

@SuryaKavitha你說LambdaExpression。 'var result ='AvailablePacks.Join(RecommendedPacks,ap => ap.PackID,rp => rp.PackID,(ap,rp)=> new {PackQuantity = ap.Quantity}); – joshua 2012-10-30 09:20:40

4

你在找這樣的嗎?

var query = from x in AvaillablePacks 
      join y in RecommendedPacks on x.PackID equals y.PackID 
      select new 
      { 
       PackQuantity = x.Quantity 
      }; 
+0

是的確實! :-)謝謝你的好代碼 – SuryaKavitha 2012-04-24 11:11:13

1

Somethign這樣應該爲你工作:

var result = (from availablePack in AvaillablePacks 
       join recommendedPack in RecommendedPackson 
        availablePack.PackID equals recommendedPack .ID) 

foreach(var availablePack in result) 
    availablePack .Quantity = PackQuantity ;