c# - 在具有附加条件的子列表上应用日期过滤器c#Linq
问题描述
我有一个模型,属性如下
Subscription
------------
Number
Id
SubscriptionLines
[ProductNo
StartDate]
我现在正在尝试在 ProductNo 上找到一个匹配的订阅并使用这个 linq
List<Subscription> _subscriptions = (from i in _subscriptions
where i.SubscriptionLines.Any(l => l.ProductNo == isbn)
select i).ToList();
我必须在StartDate
ie 上应用一个条件,以获取具有 StartDate 的最近值的订阅并匹配 ProductNo
s123
1
[
{
9876
31-2-2019
}
{
456
31-1-2020
}
]
s456
2
[
{
9876
12-2-2020
}
{
456
31-1-2020
}
]
s756
2
[
{
986
12-2-2020
}
{
456
31-1-2020
}
]
从这组样本数据中,我们有 2 个匹配产品编号 9876,但我们需要获取具有最近日期的匹配,在这种情况下它是 s456,值为 12-2-2020
可以对查询进行哪些调整以添加日期参数?
解决方案
如果您的意图是通过 isbn 和 max StartDate 获取 ProductNo 和 StartDate,试试这个。
我不确定这是否是一个好的解决方案。
var _subscriptions = (from i in subscriptions
where i.SubscriptionLines.Any(l => l.ProductNo == isbn)
select i)
.SelectMany(m => m.SubscriptionLines)
.GroupBy(o => o.StartDate)
.Select(grp => grp.OrderByDescending(grpElm => grpElm.StartDate)).First().ToList();
推荐阅读
- algorithm - O(|V| * k) 是否等于 O(|E|)?
- c++ - 如何为未排序的分区搜索中断递归
- spring - 如何在spring控制器中使用websocketSendMessage
- python - 如果python中的元素相同,如何交换列表中的元素?
- trello - 从卡的详细信息中添加成员?
- javascript - javascript/typescript 中的对象返回类型
- assembly - 由于无法识别的字符,程序集编译失败
- c++ - 初始化列表中的非常大的数组
- mongodb - MongoDB .- 为数组的每个元素创建一个字段
- vue.js - 如何使用 vue-plotly 模块覆盖 Plotly.js 方法(downloadImage)