我有一组可能包含一个或多个属性的项目。
我想使用Linq语句(查询语法)在一次传递中过滤和分组该列表,以便首先检查强制属性,然后查找可选属性。
如果不首先过滤列表然后再次查看列表以查找可选属性,我无法弄清楚如何执行此操作。
以下是我如何在foreach声明中做到这一点。 (效率不高,只是说明我需要的东西。)
var usefulBoxes = new Dictionary<Box, int>;
foreach (box in cart)
{
bool boxNeeded = false;
int someCounter = 0;
foreach (prop in box.Properties)
{
if (prop == neededProp)
boxNeeded = true;
else if (boxNeeded && prop == optionalProp)
someCounter += 1;
}
if (boxNeeded)
usefulBoxes.Add(box, someCounter)
}
答案 0 :(得分:0)
var usefulBoxes= box.where(b=>b.boxProperties.prop==neededProp).ToList();
答案 1 :(得分:0)
这是你的演示linq:
var usefulBoxes = new Dictionary<List<int>, int>();
foreach (var boxNeeded in from box in cart let boxNeeded = false let someCounter = 0 from prop in box.Properties.Where(prop => prop == neededProp) select boxNeeded)
{
if (prop == neededProp)
boxNeeded = true;
else if (boxNeeded && prop == optionalProp)
someCounter += 1;
if (boxNeeded)
usefulBoxes.Add(box, someCounter);
}