加入列表&lt;&gt;使用LINQ的<list <>列表

时间:2016-01-23 07:29:18

标签: c# linq

wall.postList<Products>,如下所示:

List<ProductOffers>

还有另一个class Products { public List<ProductOffers> ProductOffers { get; set; } } class ProductOffers { public string ProductOfferId { get; set; } public string ProductSubscription {get;set;} } 也有List<Offers>

offerId

我想加入两个列表取决于class Offers { public string offerId {get;set;} public string subscription{get;set;} } 然后我必须将匹配的订阅分配给ProductSubscription。如何使用LINQ / lambda表达式实现此目的?

2 个答案:

答案 0 :(得分:0)

你可以用这个

    List<products> Prod=//assigned list of product.
    List<Offers> Offer=//assigned list of offer.

     List<Offers> filteredOffer=(from O in Offer
                         ((from sa in Prod where (sa.ProductOffers.Where(d => d.ProductOfferId == O.OfferId).Select(d=>d.ProductOfferId).Count()>0) select sa).Count()>0).toList();

现在您可以使用此已过滤的Offers列表供您进一步使用

答案 1 :(得分:0)

我在下面提供了一个解决方案。在此,我在您的SetSubscription课程中添加了一个名为ProductOffers的新方法。请检查这是否有帮助。

class Program
    {

    static void Main(string[] args)
    {
        var products = new List<Products>();

        var offers = new List<Offers>();

        products.All(t => t.ProductOffers.All(s => s.SetSubscription(offers.First(r => r.OfferId == s.ProductOfferId))));
    }
}



public class Products
{
    public List<ProductOffers> ProductOffers { get; set; }
}

public class ProductOffers
{
    public string ProductOfferId { get; set; }
    public string ProductSubscription { get; set; }
    public bool SetSubscription(Offers offerDets)
    {
        if (offerDets != null)
        {
            this.ProductSubscription = offerDets.subscription;
            return true;
        }
        return false;
    }
}

public class Offers
{
    public string OfferId { get; set; }
    public string subscription { get; set; }
}