作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个返回语言列表的方法。它有一个可以为 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/
我是一名优秀的程序员,十分优秀!