Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 如何使用LINQ仅从选择返回一行?_C#_Linq - Fatal编程技术网

C# 如何使用LINQ仅从选择返回一行?

C# 如何使用LINQ仅从选择返回一行?,c#,linq,C#,Linq,我有以下代码: var wordForms = await db.WordForms .Where(w => w.Text == word) .AsNoTracking() .ToListAsync(); 它返回一个列表,但只有一个条目,因为文本是唯一的。我怎样才能使它仅检索一个单词?如果我理解正确,您希望立即返回单个元素。我通过以下方式做到这一点: //When there is multiple entries expected but I only need th

我有以下代码:

var wordForms = await db.WordForms
   .Where(w => w.Text == word)
   .AsNoTracking()
   .ToListAsync();

它返回一个列表,但只有一个条目,因为文本是唯一的。我怎样才能使它仅检索一个单词?

如果我理解正确,您希望立即返回单个元素。我通过以下方式做到这一点:

//When there is multiple entries expected but I only need the first
var wordForms = await db.WordForms
               .FirstOrDefaultAsync(w => w.Text == word);

如果您不需要等待,您可以使用默认的扩展方法而不需要等待

对于Async SingleOrDefault和Async FirstOrDefault,必须包含实体框架6


那么您只需要从Text==word的WordForms中获取第一个值

var wordForms = (from c in db.WordForms
                where c.Text==word
                select c).FirstOrDefault()

我可以想象,您的终端操作需要是FirstAsync、FirstOrDefaultAsync、SingleAsync或SingleOrDefaultAsync中的任意一种

我还没有检查,但我假设所有这些变体都存在。

使用作为最终LINQ方法:

 var wordForms = await db.WordForms
                         .AsNoTracking()
                         .FirstOrDefaultAsync(w => w.Text == word)

您能否修改ToListSync以获得必要的结果?如果不起作用,您只能等待一项任务,而不能等待任何其他值编辑以包含异步方法,其中的异步等待需要作为ToListSync的一种形式实现,已经使用过
 var wordForms = await db.WordForms
                         .AsNoTracking()
                         .FirstOrDefaultAsync(w => w.Text == word)