实体框架 4.1 Linq Contains 和 StartsWith

发布于 2024-12-26 07:39:37 字数 310 浏览 2 评论 0原文

我正在使用实体框架代码优先。我想根据列表对象从数据库中查询实体。这对于 contains 来说效果很好,但是如何将它与 StartsWith 结合起来呢?

这是我的代码:

List<string> values = new List<string>();
values.Add("A");
values.Add("B");
context.Customer.Where(c => values.Contains(c.Name)).ToList();

我如何查询以 A 或 B 开头的所有客户?

I am using Entity Framework Code First. I want to query entites from database against List objects. This works fine with contains, but how can I combine it with StartsWith?

This is my code:

List<string> values = new List<string>();
values.Add("A");
values.Add("B");
context.Customer.Where(c => values.Contains(c.Name)).ToList();

How can i query against all customers which starts with A or B?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

没有你我更好 2025-01-02 07:39:38

这应该在内存中工作,但我不确定它是否可以通过 EF 转换为 SQL:

context.Customer.Where(c => values.Any(s => c.Name.StartsWith(s))).ToList();

This should work in memory, but I am not sure if it could be translated into SQL by EF:

context.Customer.Where(c => values.Any(s => c.Name.StartsWith(s))).ToList();
我不在是我 2025-01-02 07:39:38

你不需要将它与 StartsWith 结合起来,因为如果它以 A 或 B 开头,那么它显然包含 A 或 B。它不能以 A 或 B 开头而不包含 A 或 B。

所以只需使用 StartsWith 而不是包含。

context.Customer.Where(c => c.StartsWith("A") || c.StartsWith("B")).ToList(); 

You don't need to combine it with StartsWith, since if it starts with A or B, then it obviously contains A or B. It can't start with A or B and not contain A or B.

So just use StartsWith instead of Contains.

context.Customer.Where(c => c.StartsWith("A") || c.StartsWith("B")).ToList(); 
疾风者 2025-01-02 07:39:38

您可以尝试以这种方式组合这两个函数:

IQueryable<Customer> result = (from C in context.Customerwhere C.Name.StartsWith("B") && values.Contains(C.Name));

You might try combining the two functions this way:

IQueryable<Customer> result = (from C in context.Customerwhere C.Name.StartsWith("B") && values.Contains(C.Name));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文