Reputation:
I have queryparams dto public string[] queryname {get;set;};
but var list = db.user.Where(p=>queryname.Contains(p.name));
Now i pass queryname="b","c" query id like 2,3,4,5 ,i hope query id like 4,5 data list ,i want linq to sql code how to coding.
| user table |
| id | name |
| -- | -- |
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | a,b,c |
| 5 | b,c,d |
Upvotes: 1
Views: 70
Reputation: 14208
You can use Intersect() to achieve it.
Produces the set intersection of two sequences.
var queryname = "b,c";
var data = new []
{
new User { UserId = 1, name = "a" },
new User { UserId = 2, name = "b" },
new User { UserId = 3, name = "c" },
new User { UserId = 4, name = "a,b,c" },
new User { UserId = 5, name = "b,c,d" }
};
var paramArray = queryname.Split(',');
var result = data.Where(p => paramArray.Intersect(p.name.Split(',')).Count() == paramArray.Count());
foreach(var item in result)
Console.WriteLine(item.UserId);
Output
4
5
Upvotes: 1