使用Linq(?)从列表中的列表中获取属性

Dan*_*der 3 c# linq lambda select list

我需要帮助从列表"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();
Run Code Online (Sandbox Code Playgroud)

为了更好地理解事物,我也会发布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; }
}
Run Code Online (Sandbox Code Playgroud)

这是我正在努力工作的整个代码,根据我选择的Feed.Name的Listview名称填充带有标题的ListView.

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);

        }
    }
Run Code Online (Sandbox Code Playgroud)

- 发布整个代码清除一些??

Asa*_*din 8

完全按照您的标题和问题描述,这应该工作:

loadFeedData
    .Where(f => f.Name == myStringFromComboBox)
    .SelectMany(f => f.Items)
    .Select(fi => fi.Title);
Run Code Online (Sandbox Code Playgroud)


Chr*_*ian 0

如果我理解正确的话,你想使用这个:

var filteredOrders = loadFeedData.Where(x => x.Name == flow)
                                 .SelectMany(x => x.Items)
                                 .Select(x => x.Title).ToList();
Run Code Online (Sandbox Code Playgroud)

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