如果在linq中检查条件

时间:2014-02-27 11:30:06

标签: c# linq lambda

以下是linq查询。在这里,我想添加一个条件。 条件:如果:名字不为空,则选择列表                  where(d => d.firstname ==“Firstname”)             其他:选择无条件的所有列表

function Ponits(string Firstname)
{

     pointsCore.Categories.SelectMany(c => c.Events).Select(e => new
     {
            e.Firstname,
            e.Surname,
            e.EntityNumber,
            e.Eventdate
     }).ToList()
}

2 个答案:

答案 0 :(得分:7)

两个选项:

首先,可选择使用Where

var events = pointsCore.Categories.SelectMany(c => c.Events);
if (!string.IsNullOrEmpty(firstName))
{
    events = events.Where(e => e.Firstname == firstName);
}
var result = events.Select(e => new { ... });

第二:让你的Where条款检查firstName

var events = pointsCore.Categories.SelectMany(c => c.Events);
                       .Where(e => string.IsNullOrEmpty(firstName) ||
                                   e.Firstname == firstName)
                       .Select(e => new { ... });

请注意,由于LINQ中的延迟评估,第一个选项不会涉及获取所有值然后查询;你还在构建一个查询。

答案 1 :(得分:2)

.Where(d => string.IsNullOrEmpty(Firstname) || d.firstname==Firstname)