如何从C#中选择的排序

时间:2015-10-09 17:47:53

标签: c# linq

我有多个“猫类型”TacoCats,SpaceCats,FatCats。我需要整理我的猫。一个条件是TacoCats如果不满65岁就不能显示。因此它们必须满足所有其他过滤条件以及没有年龄<1。 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"));
}

这也是我尝试的原始更改。

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

2 个答案:

答案 0 :(得分: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)
    );
}

答案 1 :(得分:0)

            public void SortOutOnlyActiveOrPaidCats()
  {
        AllCats = AllCats.Where 
        (x => 

            x.Age < 65 &&
            ((x.CatStatus == "Active" || x.CatStatus == "Paid") 
            && (x.CatCode == "1" || x.CatCode == "2" ||  x.CatCode == "3" || x.CatCode == "4") 
            && (x.CatEnrollmentCode != "G")));
    }

在这里,您首先要确保您只有65岁以下的猫。然后使用列出的条件

进行过滤

快乐的编码和快乐的宠爱; - )