使用Linq来从列表内的另一个列表获取属性

5

我需要帮助,从“Feed”列表中选择所有标题为“FeedItem”的项,其中“Feed.Name”与下拉框中的字符串匹配。

以下是我的尝试,但不成功,可能走了错误的路线。

 var loadFeedData = fillFeed.GetAllFeeds();
            var filteredOrders =
            loadFeedData.SelectMany(x => x.Items)
                 .Select(y => y.Title)
                 .Where(z => z.Contains(flow)).ToList();

为了更好地理解,我也会发布Feed.cs代码。
public class Feed : IEntity
{
    public string Url { get; set; }
    public Guid Id { get; set; }
    public string Category { get; set; }
    public string Namn { get; set; }
    public string UppdateInterval { get; set; }       
    public List<FeedItem> Items { get; set; }
}

这是整个代码,我正在尝试让它工作。根据我选择的Feed.Name列表视图的名称,填充标题,用于填充ListView。请保留HTML标记。
private void listFlow_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
    {
        listInfo.Items.Clear();
        listEpisode.Items.Clear();
        if (listFlow.SelectedItem != null)
        {

            string flow = listFlow.SelectedItem.ToString();
            var loadFeedData = fillFeed.GetAllFeeds();
            var filteredOrders = loadFeedData
.Where(f => f.Name == myStringFromComboBox)
.SelectMany(f => f.Items)
.Select(fi => fi.Title);

            listEpisode.Items.Add(filteredOrders);

        }
    }

- 发布完整代码以清除一些东西

了解FeedItem的定义会很有用。 - cslecours
@cslecours 不,一个标题属性不够吗? - Vladimirs
什么是“flow”,为什么要检查标题是否包含“flow”? - Asad Saeeduddin
为什么没有成功? - Euphoric
@Vladimirs,我不想对Title属性做任何假设。 - cslecours
请查看主帖以获取答案。 - DangerCoder
3个回答

9
loadFeedData
    .Where(f => f.Name == myStringFromComboBox)
    .SelectMany(f => f.Items)
    .Select(fi => fi.Title);

2

我相信你正在寻找:

List<string> titles = loadFeedData.Where(f => f.Name == "SomeName")
                    .SelectMany(f => f.Items.Select(subItem => subItem.Title))
                    .ToList();
  • 首先,您将根据名称过滤主列表loadFeedData
  • 然后从List<FeedItem>中选择Title
  • 稍后使用SelectMany平铺Titles,返回一个IEnumerable<string>
  • 可选的, 调用ToList以获取一个List<string>

0

如果我理解您的意思正确,您想使用这个:

var filteredOrders = loadFeedData.Where(x => x.Name == flow)
                                 .SelectMany(x => x.Items)
                                 .Select(x => x.Title).ToList();

这将为您提供所有 Feed.Name == flow 的 Feed 中的所有 FeedItem 项。


1
我猜他正在尝试选择标题。 - Piyush Parashar
是的,让我们假设FeedItem也有一个“Title”字段 :) - Christian
@Christian 确实如此。 - DangerCoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接