gpt4 book ai didi

c# - Entity Framework - 带有基于 NULLABLE 参数的 WHERE 子句的 LINQ 语句

转载 作者:行者123 更新时间:2023-11-30 13:47:42 25 4
gpt4 key购买 nike

我有一个返回语言列表的方法。它有一个可以为 null 的参数 languageId。如果通过,该方法返回该语言,否则返回语言列表。

我想知道我是否可以简化这段代码以在一个语句中包含一个 select 和 where 子句。

public List<Language> GetLanguageList(LanguageMapper ctx, int? languageId)
{

List<Language> languages = ctx.LANGUAGELIST
.Select(e => new Language()
{
LanguageId = e.LANGUAGEID,
LanguageName = e.LANGUAGE
})
.ToList();
if (languageId.HasValue)
{
languages = languages.Where(x => x.LanguageId == languageId).ToList();
}

return languages;

}

最佳答案

只需执行 .Where.Select 之前,像这样:

public List<Language> GetLanguageList(LanguageMapper ctx, int? languageId)
{
var query = ctx.LANGUAGELIST.AsQueryable();
if (languageId.HasValue)
{
query = query.Where(x => x.LanguageId == languageId.Value);
}

List<Language> languages = query.Select(e => new Language()
{
LanguageId = e.LANGUAGEID,
LanguageName = e.LANGUAGE
})
.ToList();
return languages;
}

通过使用 IQueryable<Language>通过这种方式,您可以确保只对数据库进行一次调用,而不管传递给此方法的参数是什么。

关于c# - Entity Framework - 带有基于 NULLABLE 参数的 WHERE 子句的 LINQ 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15768900/

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