如何在下面的LINQ中指定多个条件?
if (Books.Select(x => x.BookName).Count() !=
Books.Select(x => x.BookName).Distinct().Count())
{
//Todo
}
我想指定一些像这样的东西:
if (Books.Select(x => x.BookName && x.price).Count() !=
Books.Select(x => x.BookName && x.price).Distinct().Count())
{
//Todo
}
答案 0 :(得分:2)
您无需选择第一次计数。您可以使用匿名类型获取第二个计数。这将获得不同书籍名称和价格的数量:
if (Books.Count() != Books.Select(x => new { x.BookName, x.price}).Distinct().Count())
{
//Todo
}
答案 1 :(得分:2)
因此,要回答您的问题,请将每个项目投影为匿名类型。
但是,为了避免多次迭代源数据(如果Book
表示数据库查询,这尤其成问题),并且为了避免重复执行投影,您可以改为使用GroupBy
:
bool areDuplicatedBooks = Books.GroupBy(x => new{x.BookName, x.price})
.Where(group => group.Count() > 1)
.Any()