栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Linq to Entities的“ Contains()”解决方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Linq to Entities的“ Contains()”解决方法?

更新: EF≥4

Contains
直接支持(Checkout
Any
),因此您不需要任何解决方法。

public static IQueryable<TEntity> WhereIn<TEntity, TValue>  (    this ObjectQuery<TEntity> query,    expression<Func<TEntity, TValue>> selector,    IEnumerable<TValue> collection  ){  if (selector == null) throw new ArgumentNullException("selector");  if (collection == null) throw new ArgumentNullException("collection");  if (!collection.Any())     return query.Where(t => false);  Parameterexpression p = selector.Parameters.Single();  IEnumerable<expression> equals = collection.Select(value =>     (expression)expression.Equal(selector.Body,          expression.Constant(value, typeof(TValue))));  expression body = equals.Aggregate((accumulate, equal) =>      expression.Or(accumulate, equal));  return query.Where(expression.Lambda<Func<TEntity, bool>>(body, p));}//Optional - to allow static collection:public static IQueryable<TEntity> WhereIn<TEntity, TValue>  (    this ObjectQuery<TEntity> query,    expression<Func<TEntity, TValue>> selector,    params TValue[] collection  ){  return WhereIn(query, selector, (IEnumerable<TValue>)collection);}

用法:

public static void Main(){  using (MyObjectContext context = new MyObjectContext())  {    //Using method 1 - collection provided as collection    var contacts1 =      context.Contacts.WhereIn(c => c.Name, GetContactNames());    //Using method 2 - collection provided statically    var contacts2 = context.Contacts.WhereIn(c => c.Name,      "Contact1",      "Contact2",      "Contact3",      "Contact4"      );  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596994.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号