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

本文关键字:属于 是否 类型 何使用 LINQ 检查 | 更新日期: 2023-09-27 18:36:56

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 的东西感到震惊?谢谢。

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

您可以使用

Distinct 和 Count:

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

您可以检查所有项目是否与第一个项目具有相同的类型:

bool isValid = products.All(x => x.Type == products.First().Type);
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);

如果您只想检查 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 的元素计数。

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