我有以下项目(在UI上显示)
Items | Type | Providers |
Choclate | Mint | Nestle |
Choclate | BlueBerry | Nestle |
Choclate | White | Nestle |
Choclate | Mint | LocalProvider |
Choclate | BlueBerry | LocalProvider |
Choclate | White | LocalProvider |
Starburst | mixed | SomeXProvider |
SourPatch | mixed | SomeYProvider |
Toffee | Carmel | LocalProvider |
Toffee | Salted Carmel | NewProvider |
Toffee | Vanilla | Eclairs |我试图得到的项目有多个提供者,但不是其他的。如何构造LINQ查询以获得结果。我已经在网上找了一段时间了,但什么也没找到。
乔克拉特有多个提供者。我想要一个只有Chocalte的列表,这样我就可以用我想要的方式过滤它。
我想从列表中删除本地提供程序,因为我有Nestle作为提供程序。
我的最终结果应该是
Items | Type | Providers |
Choclate | Mint | Nestle |
Choclate | BlueBerry | Nestle |
Choclate | White | Nestle |
Starburst | mixed | SomeXProvider |
SourPatch | mixed | SomeYProvider |
Toffee | Salted Carmel | NewProvider |
Toffee | Vanilla | Eclairs |一个用户帮了我一点点忙,但结果并不像预期的那样。更新查询
responses.GroupBy(x => x.Items).Where(g => g.Select(y => y.Providers != "LocalProvider").Distinct().Count() > 1).Select(b => b.First());发布于 2018-09-06 10:07:40
我用了三个较小的步骤来说明正在发生的事情。你可以把它合并成一个大的声明,但这可能会让它变得不那么清晰。
// Gather all the Local products
var localProducts = products.Where(x => x.Providers == "LocalProvider");
// Find Local products that have a non-local counterpart
var localProductsToRemove = localProducts.Where(
x => products.Any(
y => y.Items == x.Items && y.Type == x.Type && y.Providers != x.Providers
)
);
// Take all products except the ones that we want to remove
var result = products.Except(localProductsToRemove);可运行的.NET Fiddle:https://dotnetfiddle.net/RePXLY
发布于 2018-09-05 15:17:14
var secondList = responses.Where(x => x.Providers != "LocalProvider").GroupBy(x => x.Items).ToList();将结果转换为另一个变量。然后,该变量将包含筛选的结果。
https://stackoverflow.com/questions/52187844
复制相似问题