gpt4 book ai didi

c# - 我可以在 forEach 中包含对 null 详细信息的检查吗?

转载 作者:行者123 更新时间:2023-11-30 16:02:25 28 4
gpt4 key购买 nike

我有这个代码:

         foreach (var result in results)
{
if (result.definition != null)
{
WordForm wordForm = db.WordForms
.Where(w => w.Definition == result.definition)
.FirstOrDefault();

if (wordForm == null)
{
wordForm = addWordForm(result, word);
}

addWordFormExamples(result, word, wordForm);
addWordFormSynonyms(result, word, wordForm);

db.SaveChanges();

}
}

有没有一种方法可以使用 .forEach 优化它,并通过添加一个检查来查看定义是否为 null 作为实际 .forEach 的一部分?我想清理这段代码,并尽我所能进一步简化它。

请注意,我已经将其移至私有(private)方法:

    private void processWordForm(Word word, Result result)
{
WordForm wordForm = db.WordForms
.Where(w => w.Definition == result.definition)
.FirstOrDefault();

if (wordForm == null)
{
wordForm = addWordForm(result, word);
}

addWordFormExamples(result, word, wordForm);
addWordFormSynonyms(result, word, wordForm);

db.SaveChanges();
}

所以现在我只需要一种更整洁的方式来调用这个方法,如果有办法的话。

最佳答案

在执行 foreach 循环之前,您将获得所有结果,并在循环内检查 every single 是否包含一个不为 null 的定义。这意味着您实际上只对包含定义的结果感兴趣。

您可以通过修改将 results 对象设置为仅包含具有定义的结果的查询来稍微重构您的代码。这将消除对 null 检查 foreach 循环内部。

像这样:

var results = sourceOfData.Where(i => e.definition != null).ToList();

foreach (var result in results)
{
WordForm wordForm = db.WordForms
.Where(w => w.Definition == result.definition)
.FirstOrDefault();

if (wordForm == null)
{
wordForm = addWordForm(result, word);
}

addWordFormExamples(result, word, wordForm);
addWordFormSynonyms(result, word, wordForm);

db.SaveChanges();
}

关于c# - 我可以在 forEach 中包含对 null 详细信息的检查吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37639235/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com