c# - EF获取每个项目的记录

标签 c# .net entity-framework

大家好,这就是我目前所拥有的。

public List<Word> GetWords(string[] words)
{
      return DbContext.Words.Where(w => words.Contains(w.Value.ToLower());
}

问题是,当我传递包含两个相同单词的列表时,我得到的是一个实体。什么是为每个单词获取实体的有效方法,即使它是重复的?

最佳答案

给定这个简化的测试用例,其中 sourceData 代表您的 DbContext.Words:

var sourceData = new string[]
{
    "a",
    "b",
    "c"
};

var wordsToFind = new string[]
{
    "a",
    "a"
};

一个愚蠢的方法是对每个请求的输入执行查询:

var foundWords = wordsToFind.Select(w => 
    sourceData.Where(s => s.Contains(w.ToLower()))).ToList();

或者您可以执行一次查询,然后通过再次在内存中执行查询来复制每个输入的结果:

var foundWords = sourceData.Where(w => 
    wordsToFind.Contains(w.ToLower())).ToList();

var result = wordsToFind.SelectMany(w => 
    foundWords.Where(f => 
        f.Contains(w.ToLower()))).ToList();

关于c# - EF获取每个项目的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35826463/

相关文章:

c# - 使用 DeflateStream 读取与预期大小不匹配

c# - 鼠标移动事件的问题

c# - FindWindow 和 SetForegroundWindow 替代品?

asp.net-mvc - 如何从数据库检索 VarBinary 图像到 MVC View

c# - 无法创建类型为 'MyContext' 的对象。对于设计时支持的不同模式

c# - MVC3 单_ViewStart

c# - 检测鼠标是在接触地面还是在空中

c# - 自定义标签到 PDF

entity-framework - 使用 Entity Framework 电动工具生成 View 时未找到方法异常

c# - 将 float 组转换为字符串的最快方法是什么?