Filter list <object> by another list <object2> C # LINQ
Consider the following lists:
class user { public int id {get; set;} public string name {get; set;} public bool selected {get; set;} } class coupon { public string username {get; set;} public string coupontype {get; set;} public string code {get; set;} } List<user> lUser = new List<user>(); List<coupon> lCoupon = new List<coupon>();
How is it possible (with LINQ
) to filter lCoupon
using lUser
so that only those remain that have a field lCoupon.username
present in lUser.name
, and lUser.selected
istrue
Pseudocode:
lCoupon = lCoupon.Where (w => lUser.name == w.name AND lUser.selected == true).ToList();
+3
source share
2 answers
You can also do this with a connection:
var coupons = from coupon in lCoupons join user in lUser on coupon.username equals user.name where user.selected select coupon;
This way you can easily select values ββfrom both types of objects, for example:
var selectedObjects = from coupon in lCoupons join user in lUser on coupon.username equals user.name where user.selected select new { CouponCode = coupon.code, UserId = user.Id} ;
You can ToList()
if you want.
+4
source share