Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架4.1 Linq包含并启动_C#_.net_Linq_Entity Framework_Linq To Entities - Fatal编程技术网

C# 实体框架4.1 Linq包含并启动

C# 实体框架4.1 Linq包含并启动,c#,.net,linq,entity-framework,linq-to-entities,C#,.net,Linq,Entity Framework,Linq To Entities,我首先使用实体框架代码。我想根据列表对象从数据库中查询实体。这对contains很有效,但如何将其与StartsWith结合使用 这是我的代码: List<string> values = new List<string>(); values.Add("A"); values.Add("B"); context.Customer.Where(c => values.Contains(c.Name)).ToList(); 列表值=新列表(); 价值。添加(“A”);

我首先使用实体框架代码。我想根据列表对象从数据库中查询实体。这对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”);
context.Customer.Where(c=>values.Contains(c.Name)).ToList();

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

您不需要将其与StartsWith组合,因为如果它以A或B开头,那么它显然包含A或B。它不能以A或B开头,也不能不包含A或B

所以只需使用StartsWith而不是Contains

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

您可以尝试以这种方式组合这两个功能:

IQueryable<Customer> result = (from C in context.Customerwhere C.Name.StartsWith("B") && values.Contains(C.Name));
IQueryable结果=(来自context.Customerwhere C.Name.StartsWith(“B”)和&values.Contains(C.Name));

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

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

我使用的不是String.Contains(),而是List.Contains()。您的解决方案有效,但不是动态的。例如,对A-K.@LuckyStrike的质疑——我建议,如果您有此类要求,请将其包括在您的问题中。否则,你会浪费每个人的时间,拒绝他们不可能知道的解决方案不是你想要的。你在
上下文中的C中缺少了一个空格。客户在
上下文中应该是C中的。客户在
上下文中使用ef core进行更新这会在本地进行评估警告:Microsoft.EntityFrameworkCore.Query[20500]无法翻译LINQ表达式“where{from String text in{uuuu texts\u 0 where[d].Entry.StartsWith([text])select[text]=>Any()}”,它将在本地计算。@AnthonyJohnston