2012-04-24 29 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 ;