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

后端 未结 4 1815
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-13 16:57

I\'m using LINQ to Entities (not LINQ to SQL) and I\'m having trouble creating an \'IN\' style query. Here is my query at the moment:

var items = db.InventoryIt         


        
4条回答
  •  天涯浪人
    2021-02-13 17:25

    You need to either use this one:

    .Where(string.Format("it.ID in {0}", string.Join(",", valueIds.ToArray())));
    

    or construct the WHERE part dynamically, as in this post.

    P.S. - Information has been updated and this answer updated as follows to maintain relevance:

    The link referenced contains the following update:

    ...in EF4 we added support for the Contains method and at least in this specific case for collection-valued parameters. Therefore this kind of code now works right out of the box and it is not necesary to use any additinal expression building method:

    var statusesToFind = new List {1, 2, 3, 4};
    var foos = from foo in myEntities.Foos
               where statusesToFind.Contains(foo.Status)
               select foo;
    

提交回复
热议问题