Jay Sun
Jay Sun

Reputation: 1601

LINQ/Lambda equivalent of SQL in

I have an IEnumerable that has a list of objects with ids. I want to select those objects whose IDs are 1, 2, 7, 8, 9, 10, and 11. I don't know the LINQ/Lambda equivalent of the equivalent SQL statement (select * where id in (1, 2, 7, 8, 9, 10, 11)).

I tried something like:

var movieratings = new int[] {1, 2, 7, 8, 9, 10, 11};
list.ratings= list.ratings.Select(x => movieratings.Contains(x.Value));

But that gives me a compile error like saying the type arguments cannot be inferred from usage.

Upvotes: 7

Views: 8395

Answers (1)

Kevin Holditch
Kevin Holditch

Reputation: 5303

If you are filtering you need to do that in the where clause not the select clause

var movieratings = new int[] {1, 2, 7, 8, 9, 10, 11};
list.ratings = list.ratings.Where(x => movieratings.Contains(x.Value));

Upvotes: 13

Related Questions