是否有机会将这两个语句组合在一起,仍然将wordForm作为我方法中声明的变量供以后使用?
WordForm wordForm = db.WordForms
.Where(w => w.Definition == result.definition)
.FirstOrDefault();
if (wordForm == null)
{
wordForm = addWordForm(result, word);
}
答案 0 :(得分:7)
使用??
运算符:
WordForm wordForm = db.WordForms
.Where(w => w.Definition == result.definition)
.FirstOrDefault() ?? addWordForm(result, word);
答案 1 :(得分:1)
您可以合并Where
和FirstOrDefault
,因为FirstOrDefault
允许您指定谓词。这将节省您通过整个列表只采取第一个,如果它在那里。然后使用空合并运算符??
,如果左侧为空,则仅评估右侧:
WordForm wordForm = db.WordForms
.FirstOrDefault(w => w.Definition == result.definition) ?? addWordForm(result, word);
答案 2 :(得分:0)
编辑:没关系,错过了OP说他需要声明wordForm变量的部分!
您可以将该查询简化为:
if (WordForms.Any(w => w.Definition != result.definition))
{
Console.WriteLine("Not found");
}
我还要确保“结果”首先不为空。