Reputation: 3291
Lets say I have a student table and I want to display the student with ID 1.
SELECT *
FROM STUDENT ST
WHERE ST.ID = 1
This is how I achive this in Linq.
StudentQuery = from r in oStudentDataTable.AsEnumerable()
where (r.Field<int>("ID") == 1)
select r;
oStudentDataTable = StudentQuery.CopyToDataTable();
but what if I want to display the students with these ids 1,2,3,4,5..
SELECT *
FROM STUDENT ST
WHERE ST.ID IN (1,2,3,4,5)
How can I achieve this in Linq?
Upvotes: 13
Views: 96623
Reputation: 70806
Use .Contains
var list = new List<int> { 1, 2, 3, 4, 5 };
var result = (from r in oStudentDataTable.AsEnumerable()
where (list.Contains(r.Field<int>("ID"))
select r).ToList();
Upvotes: 20
Reputation: 173
Try this also :
var list = new List<int> { 1, 2, 3, 4, 5 };
List<StudentQuery> result = (from r in oStudentDataTable.AsEnumerable()
where (list.Contains(r.Field<int>("ID"))
select new StudentQuery
{ /*
.Your entity here
.
*/
}).ToList<StudentQuery>();
Upvotes: 3
Reputation: 5151
Try IEnumerable.Contains
:
var list = new List<int>(){1,2,3,4,5};
StudentQuery = from r in oStudentDataTable.AsEnumerable()
where (list.Contains(r.Field<int>("ID")))
select r;
oStudentDataTable = StudentQuery.CopyToDataTable();
Upvotes: 4