使用 LINQ 联接列表<>与<列表<>
本文关键字:列表 LINQ 使用 | 更新日期: 2023-09-27 18:31:29
有List<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;}
}
我想加入这两个列表取决于products.ProductOffers.ProductOfferId = offers.OfferId.
然后我必须将匹配的订阅分配给产品订阅。如何使用 LINQ/lambda 表达式实现此目的?
我在下面提供了一个解决方案。在此,我在ProductOffers
类中添加了一个名为SetSubscription
的新方法。请检查这是否有帮助。
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; }
}
你可以使用它
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
列表以供进一步使用