code_junkie

How do you do a SQL style 'IN' statement in LINQ to Entities (Entity Framework) if Contains isn't supported?

Nov 12th, 2011
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. var items = db.InventoryItem
  2. .Include("Kind")
  3. .Include("PropertyValues")
  4. .Include("PropertyValues.KindProperty")
  5. .Where(itm => valueIds.Contains(itm.ID)).ToList<InventoryItem>();
  6.  
  7. .Where(string.Format("it.ID in {0}", string.Join(",", valueIds.ToArray())));
  8.  
  9. var statusesToFind = new List<int> {1, 2, 3, 4};
  10. var foos = from foo in myEntities.Foos
  11. where statusesToFind.Contains(foo.Status)
  12. select foo;
  13.  
  14. var userIds = new[] { 1, 2, 3 };
  15.  
  16. from u in Users
  17. where userIds.Any(i => i==u.Id)
  18. select u;
  19.  
  20. SELECT
  21. [Extent1].[Id] AS [Id],
  22. [Extent1].[DisplayName] AS [DisplayName],
  23. FROM [dbo].[Users] AS [Extent1]
  24. WHERE EXISTS (SELECT
  25. 1 AS [C1]
  26. FROM (SELECT
  27. [UnionAll1].[C1] AS [C1]
  28. FROM (SELECT
  29. 1 AS [C1]
  30. FROM ( SELECT 1 AS X ) AS [SingleRowTable1]
  31. UNION ALL
  32. SELECT
  33. 2 AS [C1]
  34. FROM ( SELECT 1 AS X ) AS [SingleRowTable2]) AS [UnionAll1]
  35. UNION ALL
  36. SELECT
  37. 3 AS [C1]
  38. FROM ( SELECT 1 AS X ) AS [SingleRowTable3]) AS [UnionAll2]
  39. WHERE [UnionAll2].[C1] = [Extent1].[Id]
  40. )
  41.  
  42. var items = db.InventoryItem
  43. .Include("Kind")
  44. .Include("PropertyValues")
  45. .Include("PropertyValues.KindProperty")
  46. .ToList()
  47. .Where(itm => valueIds.Contains(itm.ID));
Add Comment
Please, Sign In to add comment