【问题标题】:C# How to make a list out of IEnumerableC#如何从IEnumerable中创建一个列表
【发布时间】:2018-11-17 03:17:02
【问题描述】:

我目前正在玩 TvDbSharper (https://github.com/HristoKolev/TvDbSharper),我有一个关于 IEnumerable 的问题。 我要做的是获取给定系列的所有 Id,然后将结果添加到 listView 中。

这段代码给了我列表中的第一个 ID:

const int SeriesId = 78804;
var tasks = new List<Task<TvDbResponse<BasicEpisode[]>>>();
var firstResponse = await client.Series.GetEpisodesAsync(SeriesId, 1);
for (int i = 2; i <= firstResponse.Links.Last; i++)
{
tasks.Add(client.Series.GetEpisodesAsync(SeriesId, i));
}
var results = await Task.WhenAll(tasks);
var episodes = firstResponse.Data.Concat(results.SelectMany(x => x.Data));

epsListview.View = View.Details;
epsListview.Columns.Add("Episode", 100);
string[] arr = new string[4];
ListViewItem itm;
arr[0] = episodes.First().Id.ToString();
itm = new ListViewItem(arr);
epsListview.Items.Add(itm);

但我想要的是在 epsListview 中为每个可用的 id 创建一个新行。

我从未使用过 IEnumerable,而且我在使用 c# 时还是个新手,我已经被这个问题困扰了一个多星期了。谁能帮我解决这个问题?

谢谢!!

【问题讨论】:

  • 也许我误解了这个问题,但.ToList() 会将IEnumerable 转换为List
  • 你知道如何使用foreach 语句吗?

标签: c# list ienumerable


【解决方案1】:

您似乎想要从 IEnumerable 剧集构建一个 ID 数组,并将该数组添加到单个 ListViewItem。应该这样做。

string[] arr = episodes.Select(episode => episode.Id.ToString()).ToArray()
ListViewItem itm = new ListViewItem(arr);
epsListview.Items.Add(itm);

【讨论】:

  • 正是我需要的!我刚刚学到了一些新东西!非常感谢 !!!! :)
  • 不客气。 LINQ extension methods 对于使用 IEnumerables 非常有用。
猜你喜欢
  • 2013-07-24
  • 2015-11-25
  • 1970-01-01
  • 2017-03-30
  • 2011-10-29
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多