Преобразование запроса linq в строковый массив - С#

Каков наиболее эффективный способ преобразования одного столбца linq-запроса в строковый массив?

private string[] WordList()
    {
        DataContext db = new DataContext();

        var list = from x in db.Words
                   orderby x.Word ascending
                   select new { x.Word };

       // return string array here
    }

Примечание. x.Word - это строка

Ответ 1

Я предпочитаю лямбда-стиль, и вам действительно нужно избавляться от контекста данных.

private string[] WordList()
{
    using (DataContext db = new DataContext())
    {
       return db.Words.Select( x => x.Word ).OrderBy( x => x ).ToArray();
    }
}

Ответ 2

Как насчет:

return list.ToArray();

Предполагается, что x.Word на самом деле является строкой.

В противном случае вы можете попробовать:

return list.Select(x => x.ToString()).ToArray();

Ответ 3

если вы введете его в синтаксисе Lambda, вы можете сделать это немного проще с помощью метода ToArray:

string[] list = db.Words.OrderBy(w=> w.Word).Select(w => w.Word).ToArray();

или даже короче:

return db.Words.OrderBy(w => w.Word).Select(w => w.Word).ToArray();