1

如果我有 Author 对象列表,例如

List<Author> authors = new List<Author>{ 
       new  Author { Id = 1, Name = "John Freeman"};
       new  Author { Id = 1, Name = "Adam Kurtz"};
};

这个例子实际上包含在返回作者列表的静态方法中。

在我的另一个对象内有Authorstype的属性List<Author>。现在我想将列表中的第二作者分配给Authors属性。

我以为我可以使用Authors = GetAuthors()[1].ToList();但我无法访问索引指定作者的 ToList() 。

澄清

private static List<Author> GetAuthors() return list of authors (example above). 
var someObject = new SomeObject()
{
   Authors = // select only Adam Kurtz author using index 
             // and assign to Authors property of type List<Author>
};
4

3 回答 3

1

如果我对您的理解正确,您希望其中List<Author>有一个作者。ToList()在单个对象上使用Author不是有效的语法。

试试这个:Authors = new List<Author>() { GetAuthors()[1] };

于 2013-10-16T09:55:16.733 回答
0

您不能将单个作者分配给list<Author>,因此您必须创建一个(单个作者的)列表来分配它。

Authors = new List<Author>() {GetAuthor()[1]};

我不知道,你为什么要基于索引,理想情况下你应该写一个基于ID作者的查询来获取价值,这样以后就不会产生任何问题了..

像:Authors = new List<Author>() {GetAuthor().FirstOrDefault(x=>x.ID==2)};

于 2013-10-16T09:57:17.660 回答
0

LINQ 的解决方案是 GetAuthors().Skip(1).Take(1)

编辑:忽略所有这些。您正在使用列表。你真正需要的是使用GetRange

GetAuthors().GetRange(1,1);

于 2013-10-16T09:57:55.333 回答