如何从C#中选择的排序

Leo*_*chi 3 c# linq

我有多个"猫类型"TacoCats,SpaceCats,FatCats.我需要整理我的猫.一个条件是,如果TacoCats未满65岁,则无法显示.因此,他们必须满足所有其他过滤条件以及年龄<65岁.如何更改此表达式,以便只有TacoCats受条件影响必须超过65岁?澄清我需要所有其他猫,无论年龄和条件只影响"TacoCats"

public void SortOutOnlyActiveOrPaidCats()
{
    AllCats = AllCats.Where 
        (x => 
            (x.CatStatus == "Active" || x.CatStatus == "Paid") 
            && (x.CatCode == "1" || x.CatCode == "2" || x.CatCode == "3" || x.CatCode == "4") 
            && (x.CatEnrollmentCode != "G"));
}
Run Code Online (Sandbox Code Playgroud)

这也是我尝试的原始变化.

 (x = > ((x.CatStatus == "Active" || x.CatStatus == "Paid") && (x.CatCode == "1" || x.CatCode == "2" || x.CatCode == "3" || x.CatCode == "4") && (x.CatEnrollmentCode != "G") && (x.CatType != "TacoCat")) || ((x.CatStatus == "Active" || x.CatStatus == "Paid") && (x.CatCode == "1" || x.CatCode == "2" || x.CatCode == "3" || x.CatCode == "4") && (x.CatEnrollmentCode != "G") && (x.Age >= 65) && (x.PolicyType == "Taco Cats")) )
Run Code Online (Sandbox Code Playgroud)

Dav*_*idG 5

首先,我们可以通过将状态和代码放入数组并使用Contains,然后为TacoCat年龄添加额外条件来简化它,如果你简化它基本上是"猫超过65或它不是一个塔科猫":

public void SortOutOnlyActiveOrPaidCats()
{
    var validStatuses = new [] { "Active", "Paid" };
    var validCodes = new [] { "1", "2", "3", "4" };

    AllCats = AllCats.Where(x => 
        validStatuses.Contains(x.CatStatus) &&
        validCodes.Contains(x.CatCode) &&
        x.CatEnrollmentCode != "G" &&
        (x.CatType != "TacoCat" || x.Age >= 65)
    );
}
Run Code Online (Sandbox Code Playgroud)