0

我最初有 2 个主题演讲和曲目列表。然后每个都通过一个键按日期分组。见下文:

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

任何建议将不胜感激。谢谢!

4

5 回答 5

1

你应该这样做

var result = (from x in Keynotes
            join td in TrackDays on x.Key equals td.Key
            select x).ToList();
于 2013-08-14T16:58:42.960 回答
1
var trackKeynotes = Keynotes.SingleOrDefault(g => g.Key == trackKey);
于 2013-08-14T16:51:08.170 回答
0

也许这

var trackKeynotes = Keynotes.Where(x => x.Key == trackKey);

我假设 trackKey 是 Keynotes 的一个键。

于 2013-08-14T16:54:39.327 回答
0

Use Keynotes[trackKey] to index into your grouped items.

于 2013-08-14T16:50:13.713 回答
0

Try this instead ::

var trackKeynotes = Keynotes.Where(K => K.Key == trackKey);

Hope this will help !!

于 2013-08-14T16:51:57.107 回答