大家好,这就是我目前所拥有的。
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/