如果在linq中检查条件

Son*_*oni 0 c# linq lambda

以下是linq查询.在这里,我想添加一个条件.条件:如果:Firstname不为空,则选择list where(d => d.firstname =="Firstname") else:选择所有列表无条件

function Ponits(string Firstname)
{

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

Jon*_*eet 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 { ... });
Run Code Online (Sandbox Code Playgroud)

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

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

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