0

このようなステートメントを単純化するにはどうすればよいですか。

    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();

    }

違いは。だけです.Where(c => c.GroupId== groupId)String.IsNullOrEmpty(groupId)クエリステートメント内に条件を含めることは可能ですか?

4

3 に答える 3

7

複数のステップでクエリを作成できます。空でないWhere場合にのみパーツを追加するだけです。groupId

クエリは、を呼び出したときにのみ実行されますToList()

var values = CTX.Values.Include(c => c.Customer);

if(!String.IsNullOrEmpty(groupId))
  values = values.Where(c => c.GroupId == groupId);

someList = values.ToList();
于 2012-12-27T11:18:05.023 に答える
3

多分これ?

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

PLBリクエストで編集:)

bool isGroupValid = String.IsNullOrEmpty(groupId);
someList = CTX.Values.Include(c => c.Customer)
       .Where(c => isGroupValid
               || c.GroupId== groupId)
       .ToList();
于 2012-12-27T11:17:26.843 に答える
0

あなたは付け加えられます:

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

あれは:

CTX.Values.Include(c => c.Customer)
    .Where(c => c.GroupId == groupId || c => String.IsNullOrEmpty(groupId))
    .ToList();
于 2012-12-27T11:18:55.067 に答える