如何使用LINQ检查所有项目是否属于同一类型

时间:2012-06-11 07:00:27

标签: c# linq

public class  Product
{
public string Name {set; get;}
public string Type {set; get;}
}

public class ProductType
{
public string Name{get;set}
}


var products = GetProducts();
var productTypes = GetProductTypes(); 

bool isValid = products.All(x=>x.Type == ??) // Help required

我想确保'产品'中的所有产品仅属于产品类型。

如何在linq中实现这一目标。任何帮助非常感谢我对LINQ的东西感到震惊? 感谢。

4 个答案:

答案 0 :(得分:11)

你可以使用Distinct和Count:

isValid = products.Select(x => x.Type).Distinct().Count() == 1;

答案 1 :(得分:10)

您可以检查所有项目是否与第一项相同:

bool isValid = products.All(x => x.Type == products.First().Type);

答案 2 :(得分:6)

var isValid = products.Select(p => p.Type).Distinct().Count() == 1;

var first = products.FirstOrDefault();
var isValid == (first == null) ? true : products.All(p => p.Type == first.Type);

答案 3 :(得分:0)

如果您只想检查LINQ中每个元素的类型,那么 -

class A{
}

class B{
}

static void Main(string[] args)
{
       ArrayList arr = new ArrayList();
       arr.Add(new A());
       arr.Add(new A());
       arr.Add(new A());
       arr.Add(new B());
       arr.Add(new A());
       int count= arr.ToArray().Count(x=> !x.GetType().Equals(typeof(A)));
}

上面的示例,检查数组中每个元素的类型,然后从数组中获取不属于类类型A的元素计数。

我希望你有同样的情景,希望这有帮助!!