【发布时间】:2014-05-15 00:33:08
【问题描述】:
我使用 .NET 4.5 和 VS 2012。
我有一个类模型(来自 Xml Deserialize),现在我已经“过滤”了它。
我有几个条件的可空值。
使用 lambda 表达式的最佳做法是什么?
我有这个代码:
public static List<MyDto> ListarEntornosYContenidoEntorno(int? id, string name, int? id2, string name2, string entorno, bool? shouldBe, string mode)
{
IEnumerable<MyDto> list = Model.Environments;
if (id.HasValue)
list = list.Where(item => item.IdCiaDespliegue.Equals(id.Value));
if (!name.IsNullOrWhiteSpace())
list = list.Where(item => item.NombreCiaDespliegue.Equals(name));
if (id2.HasValue)
list = list.Where(item => item.IdContenidoEntorno.Equals(id2.Value));
if (!name2.IsNullOrWhiteSpace())
list = list.Where(item => item.ContenidoEntorno.Equals(name2));
if (!entorno.IsNullOrWhiteSpace())
list = list.Where(item => item.Entorno.Equals(entorno));
if (shouldBe.HasValue)
list = list.Where(item => item.DebeEtiquetar.Equals(shouldBe));
if (!mode.IsNullOrWhiteSpace())
list = list.Where(item => item.Modo.Equals(mode));
return list.ToList();
}
【问题讨论】:
-
看起来不错,有问题吗?
-
我会找到好的做法,更易读、更清晰。
-
如果您想对所有过滤器使用一种方法,您的方法似乎很明确,不是吗?
-
这类问题属于codereview.stackexchange.com。
标签: c# linq lambda where-clause conditional-statements