我的输入数据是像下面这样的行的列表,称之为行
author1 :: author2 :: author3-标题
我创建了一个提取作者和标题的函数:
ExtractNameAndAuthors(string line, out string title, IList<string> authors)
我现在想使用Linq以以下形式创建查找(ILookup)对象:
键:标题
价值:作者名单
真的有人会流利吗?
最佳答案
LINQ通常不能与out
参数配合使用。您可以做到,但是通常最好避免这样做。与其通过参数传递数据,不如创建一个保留标题和作者列表的新类型,以便ExtractNameAndAuthors
可以返回该类型的实例,这是最好的:
public class Book
{
public Book(string title, IList<string> authors)
{
Title = title;
Authors = authors;
}
public string Title{get;private set;}
public IList<string> Authors{get; private set;}
}
一旦有了它,并相应地修改了
ExtractNameAndAuthors
,就可以这样做:var lookup = lines.Select(line => ExtractNameAndAuthors(line))
.ToLookup(book => book.Title, book => book.Authors);
关于c# - 如何使用Linq从列表列表中创建查找?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16062849/