我的输入数据是像下面这样的行的列表,称之为行


  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/

10-12 02:04