将匿名类型转换为数组或arraylist.可以吗?

Dwi*_*t T 3 c# linq linq-to-sql

尝试使用数据库中的linq检索数据.我想使用匿名类型并转换为Ilist,Array,ArrayList或Collection.数据用于接受Ilist,arraylist或集合的第三方对象.

我似乎无法让这个工作.我收到以下错误,"类型'System.String'不支持序列运算符"

using (var db = new dbDataContext())
{
    var query = from e in db.people
                select new
                {
                    Count = e.LastName.Count()
                };

    Array test;
    test = query.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

它与将结果转换为数组列表甚至是匿名类型无关.这是您的代码的另一个版本将失败:

using (var db = new dbDataContext())
{
    var query = db.people.Select(x => x.LastName.Count());
    foreach (int x in query)
    {
        Console.WriteLine(x);
    }
}
Run Code Online (Sandbox Code Playgroud)

那仍然会以同样的方式失败 - 因为这是这个位的翻译:

x => x.LastName.Count()
Run Code Online (Sandbox Code Playgroud)

进入导致问题的SQL.

将其更改为:

x => x.LastName.Length
Run Code Online (Sandbox Code Playgroud)

我怀疑你会发现它有效.请注意,这不是一个真正的C#问题 - 它只是LINQ to SQL的翻译能力.

我建议你不要在这里使用匿名类型 - 这是毫无意义的.也许这不是你的完整代码,但总的来说,如果你发现自己创建了一个只有一个成员的匿名类型,那么问问自己它是否真的对你有益.