如何获取IEnumerable列表的值?

5
我有一个名为list的IEnumerable列表。它包含以下示例值:
Count | Start | End ---|---|--- 1 | 0 | 10 2 | 10 | 20 3 | 20 | 30
我想随时访问并将这些Count、Start和End值分配给任何变量。我该怎么做?

1
不清楚你的问题。你可以随时通过从对象中读取它们来访问这些值。 - Maarten
你的尝试失败在哪里? - Hamlet Hakobyan
1
list[i].Count/list[i].Start/list[i].End 这样不行吗? - Sergey Kalinichenko
使用LINQ,您可以访问此列表并将其映射到一个新类中,从任何地方都可以访问该类。之后,您只需要在该IEnumerable上调用ToList()即可。 - Gábor Bakos
我尝试了这个:对于列表中的每个元素(也可以使用list[i]来访问) { cnt = v.Count; strt = v.Start; nd = v.End; } - 1teamsah
4个回答

12
“IEnumerable”本身没有“Count”,“Start”或“End”。它的“元素”有这些属性,因此您需要确定集合中的元素,以从中读取这些值。例如,要读取第一个元素上的值:
var firstCount = list.First().Count;
var firstStart = list.First().Start;
var firstEnd = list.First().End;

或者,如果您想获取所有 Count 值的集合,可以使用以下代码:

var allCounts = list.Select(c => c.Count);

您正在操作一个元素集合,而不是单个元素。因此,要从任何特定元素中获取信息,您首先需要从集合中识别它。并且有很多方法可以链接在一起来识别任何给定的元素或一组元素。

请注意,某些方法在特定条件下会抛出异常。例如,如果集合为空,则 First() 方法将抛出异常。值得尝试使用所有可用的 IEnumerable<T> 扩展并查看它们的行为。将它们链接在一起可以提供一个相当强大的语言来查询集合。 - David

5

使用循环(loop)吗?

foreach(var item in list)
{
   var count = item.Count;
}

或者使用ToList方法将其转换为List<T>,然后你就可以用索引访问你的值:

var myList = list.ToList();
var count = myList[0].Count;

如果您知道类型,可以将IEnumerable强制转换为IList<T>,以便使用索引器。


2

使用命名空间可以通过 Linq 访问列表。

using System.Linq;

像这样

var firstListElement = list.ElementAt(0);
var firstListElementCount = firstListElement.Count;
// do more stuff with my first element of the list

-1

尝试:

list.Count()
list.First() or list.FirstOrDefault()
list.Last() or list.LastOrDefault()

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