如何通过LINQ在列表中按键选择列表
本文关键字:列表 选择 LINQ 何通过 | 更新日期: 2023-09-27 18:27:45
我最初有两个用于注释记号和轨迹的列表。然后,通过一个密钥将每个数据按日期分组。见下文:
var Keynotes = _keynoteService.GetKeynotesForContentItem(trackPart.ContentItem).GroupBy(k => string.Format("{0}-{1}", k.Timeslot.DayOfYear, k.Timeslot.Year));
var Tracks = GetTracksForContentItem(trackPart.ContentItem);
foreach (var track in Tracks)
{
var trackItem = new TrackItem();
trackItem.Days = new List<TrackDay>();
var trackDays = track.Sessions.GroupBy(s => string.Format("{0}-{1}", s.Timeslot.DayOfYear, s.Timeslot.Year));
foreach(var trackDay in trackDays)
{
var trackKey = trackDay.Key //THIS IS THE KEY I NEED TO MATCH IN Keynotes
var trackKeynotes = Keynotes. //I'm Stuck here
新列表现在是Keynotes和trackDays,它们实际上是按日期键列出的列表。
如何在Keynotes中选择与trackDays中的特定关键点匹配的列表?我已经有了钥匙,我只需要知道如何正确地从Keynotes中进行选择,就可以得到正确的列表。
我不是LINQ专家,所以我想要一些帮助。
我在想Keynotes.Select或Keynotes.SingleOrDefault
任何建议都将不胜感激。谢谢
var trackKeynotes = Keynotes.SingleOrDefault(g => g.Key == trackKey);
你应该这样做
var result = (from x in Keynotes
join td in TrackDays on x.Key equals td.Key
select x).ToList();
使用Keynotes[trackKey]
对分组项目进行索引。
请尝试以下操作::
var trackKeynotes = Keynotes.Where(K => K.Key == trackKey);
希望这会有所帮助!!
也许这个
var trackKeynotes = Keynotes.Where(x => x.Key == trackKey);
我假设trackKey是Keynotes的一个键。