繁体   English   中英

LINQ指定多个条件

[英]LINQ Specify multiple conditions

如何在下面的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
}

您不需要选择即可获得第一个计数。 您可以使用匿名类型来获取第二个计数。 这将获得不同的书名和价格的数量:

if (Books.Count() != Books.Select(x => new { x.BookName, x.price}).Distinct().Count())
{
    //Todo
}

因此,要回答您的问题,请将每个项目投影到匿名类型中。

但是,为避免多次迭代源数据(如果Book代表数据库查询,这尤其成问题),并且避免重复执行投影,可以改用GroupBy

bool areDuplicatedBooks = Books.GroupBy(x => new{x.BookName, x.price})
    .Where(group => group.Count() > 1)
    .Any()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM