C# 简化if语句

C# 简化if语句,c#,.net,linq,if-statement,C#,.net,Linq,If Statement,我如何简化这种说法: var someList = new List<someType>(); if (String.IsNullOrEmpty(groupId)) { someList = CTX.Values.Include(c => c.Customer).ToList(); } else { someList = CTX.Values.Include(c => c.Customer)

我如何简化这种说法:

    var someList = new List<someType>();

    if (String.IsNullOrEmpty(groupId))
    {
        someList = CTX.Values.Include(c => c.Customer).ToList();
    }
    else
    {
        someList = CTX.Values.Include(c => c.Customer).Where(c => c.GroupId== groupId).ToList();

    }
区别仅在于.Wherec=>c.GroupId==GroupId。是否可以在查询语句中包含条件字符串.IsNullOrEmptygroupId?

可能是这样的吗

someList = CTX.Values.Include(c => c.Customer)
       .Where(c => String.IsNullOrEmpty(groupId)
                   || c.GroupId== groupId)
       .ToList();
由公共小巴要求编辑:


可以分多个步骤构造查询。只需在groupId不为空时添加Where部分

只有在调用ToList后才会执行查询

您可以添加:

.Where(c => String.IsNullOrEmpty(groupId))
即:

CTX.Values.Include(c => c.Customer)
    .Where(c => c.GroupId == groupId || c => String.IsNullOrEmpty(groupId))
    .ToList();

注意:在每次迭代中都会检查groupId是否为null或空字符串,我知道如果这是一个瓶颈,则会出现更大的问题@公共小巴这只是一个想法。重构很容易避免这个瓶颈:我删除了我的回复,因为我认为你不应该“简化”它。你的代码比我的代码更容易理解;使用列表someList;,因为该值不会被使用。@MichaelViktorStarberg您的答案的主要问题不是它很难阅读,而是它是错误的。这个问题更适合回答是的,这个问题是最可读的,并且达到了主要目标!
.Where(c => String.IsNullOrEmpty(groupId))
CTX.Values.Include(c => c.Customer)
    .Where(c => c.GroupId == groupId || c => String.IsNullOrEmpty(groupId))
    .ToList();