c# - 如何使用 LINQ 对 C# 中共享公共键值的两个不同对象列表进行分组连接?
问题描述
我想将这两个列表与共同的密钥一起加入日期,但无论我尝试什么都行不通,有什么建议吗?
课程:
public class item_mod
{
[JsonProperty(PropertyName = "item.price")]
public string price { get; set; }
[JsonProperty(PropertyName = "item.name")]
public string name { get; set; }
[JsonProperty(PropertyName = "@modify_stamp")]
public string stamp { get; set; }
[JsonProperty(PropertyName = "$trans")]
public string trans { get; set; }
[JsonProperty(PropertyName = "trans.date")]
public string date { get; set; }
}
public class trans_mod
{
[DataMember]
public string refer { get; set; }
[DataMember]
public string date { get; set; }
[DataMember]
public string time { get; set; }
[DataMember]
public string location { get; set; }
[DataMember]
public int points { get; set; }
[DataMember]
public string _total { get; set; }
[DataMember]
public string _discount { get; set; }
[JsonProperty(PropertyName = "$$position")]
public string position { get; set; }
[JsonProperty(PropertyName = "@modify_stamp")]
public string stamp { get; set; }
[JsonProperty(PropertyName = "$trans")]
public string trans { get; set; }
}
列表:(我将它们分组,日期是关键)
var q1 = it.GroupBy(x => x.date)
.Select(g => new
{
Date = g.Key,
Details = g.Select(x => new
{
Name = x.name,
Price = x.price,
Trans = x.trans,
})
.ToList()
})
.ToList();
var q2 = t.GroupBy(x => x.date)
.Select(g => new
{
Date = g.Key,
Details = g.Select(x => new
{
Location = x.location,
Points = x.points,
Pos = x.position,
Time = x.time,
Discount = x._discount,
Totals = x._total,
Trans = x.trans,
Ref = x.refer
})
.ToList()
});
我想将这两个合并到一个群组中 - 有什么建议吗?
到目前为止我已经尝试过:
var query = from trans in q2
join item in q1 on q2 equals q1.Date into gj
select new { Date = q2.Date, Item = gj };
=> 不起作用返回空白
var mergedList = q1.Union(q2).ToList();
=> 也不起作用。
任何帮助表示赞赏,我还注意到我对面向对象编程非常陌生,我只是想弄清楚如何做事!
解决方案
您可以通过 SelectMany 合并
var query = q2.SelectMany(x =>
q1.Where(z => z.Date == x.Date)
.Select(z => new
{
Date=z.Date,
q1Details = z.Details,
q2Details= x.Details
})
).ToList();
推荐阅读
- c++ - 如何在 C++ Builder 中设置 C++ 语言标准
- c++ - Djikstra 的实现似乎与理论复杂性不匹配
- javascript - 单击时选择一个下拉菜单,而不是多个
- c++ - 对插入链表感到困惑
- python - Pandas DataFrame中完整的空列与字符串的比较
- javascript - 在 pwa 和 safari 中下载 PDF 时,我得到没有按钮的 pdf
- typescript - Vue.js - 对象的推送方法抛出类型错误
- python - 使用预加载器抓取网站的问题
- php - MySQL - 在其他系统上查询时间过长。如何加快速度?MySQL 配置
- xamarin.forms - Xamarin.iOS WKWebView 和 WKNavigationDelegate 自定义渲染器 Intranet SharePoint 链接不起作用