我有一个要求,我需要从列表中过滤掉空值,只有当空值出现在第一个非空值之后和最后一个非空值之前。
Product one = new Product { Name="A" Priority="1" Value=null };
Product two = new Product { Name="A" Priority="2" Value=null };
Product three = new Product { Name="A" Priority="3" Value="10" };
Product four = new Product { Name="A" Priority="4" Value=null };
Product five = new Product { Name="A" Priority="5" Value="20" };
Product six = new Product { Name="A" Priority="6" Value=null };
在示例中,我需要首先根据产品的优先级对产品列表进行排序,然后检查第一个非空值(即优先级 3)和最后一个非空值(即优先级 5),然后获取列表在优先级 3 和 5 内具有空值的所有产品中。因此,在我们的示例中,只有具有优先级 4 的产品 4 是我要查找的记录。我开始按产品对它们进行实际分组并按优先级对它们进行排序,但在那之后一直坚持如何进行
from p in Products
group p by p.Product into grp
select new
{
Product = grp.Key
Values = grp.OrderBy(x => x.Priority)
}
有人可以指点我如何进行吗?我在想我可以使用索引来识别所有非空值并迭代以获取最小和最大优先级值,然后查询在最小/最大优先级内具有空白空值的所有记录。