【问题标题】:How to select List in a List by Key through LINQ如何通过 LINQ 按键选择列表中的列表
【发布时间】:2013-08-14 16:47:23
【问题描述】:

我最初有 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

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

【问题讨论】:

标签: c# linq list


【解决方案1】:
var trackKeynotes = Keynotes.SingleOrDefault(g => g.Key == trackKey);

【讨论】:

  • 他要的是一份清单,而不是单项。
  • @RobertHarvey:它实际上是一个列表,因为GroupBy
  • 这实际上是正确的方法。我提到在 Group By 之后,它们成为列表中的列表。正如许多人所建议的那样,它没有选择基础列表,因此它不起作用。
【解决方案2】:

你应该这样做

var result = (from x in Keynotes
            join td in TrackDays on x.Key equals td.Key
            select x).ToList();

【讨论】:

  • 首先,谢谢!真的很感激。但是,Keynotes 和 TrackDays 具有不同的项目(实体),具有不同的列/属性。不确定将它们结合在一起是否可行,但我已经尝试过 Cuong 的回答。谢谢!
【解决方案3】:

使用Keynotes[trackKey] 为您的分组项编制索引。

【讨论】:

    【解决方案4】:

    试试这个::

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

    希望这会有所帮助!

    【讨论】:

      【解决方案5】:

      也许是这样

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

      我假设 trackKey 是 Keynotes 的一个键。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-02
        • 1970-01-01
        • 1970-01-01
        • 2016-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多