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的东西感到震惊? 感谢。
答案 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的元素计数。
我希望你有同样的情景,希望这有帮助!!