首页  >  文章  >  后端开发  >  如何在 Linq to Entities 中实现“Contains()”功能?

如何在 Linq to Entities 中实现“Contains()”功能?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-31 12:02:02371浏览

How to Implement 'Contains()' Functionality in Linq to Entities?

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

Linq to 本身并不支持“Contains()”方法实体,这在查询中处理 ID 集合时带来了挑战。在这里,我们提出了一个可行的解决方案来解决此限制。

解决方案:

要替换不受支持的“Contains()”方法,我们利用“Any()” ' 方法代替:

var q = from t in svc.OpenTransaction
        where txnIds.Any<long>(tt => tt == t.OpenTransactionId)
        select t;

但是,此修改并不能解决 Linq to Entities 上下文中不支持 'Any()' 的问题。为了克服这个问题,我们提供了一种替代方法:

public static IQueryable<TEntity> WhereIn<TEntity, TValue>
(
this ObjectQuery<TEntity> query,
Expression<Func<TEntity, TValue>> selector,
IEnumerable<TValue> collection
)

此扩展方法使您能够将过滤器应用于一系列实体类型和属性。

使用示例:

以下代码演示了如何使用 'WhereIn()' 方法:

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"
    );
}

通过使用此解决方案,您可以在使用时获得 'Contains()' 的功能Linq to Entities,为您的查询提供更大的灵活性。

以上是如何在 Linq to Entities 中实现“Contains()”功能?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn