Sri*_*ddy 3 c# linq entity-framework
我有一个返回语言列表的方法.它有一个可以为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;
}
Run Code Online (Sandbox Code Playgroud)
就这样做.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;
}
Run Code Online (Sandbox Code Playgroud)
通过IQueryable<Language>这种方式使用,您可以确保只对数据库进行一次调用,而不管传递给此方法的参数是什么.
| 归档时间: |
|
| 查看次数: |
5308 次 |
| 最近记录: |