尝试使用linq从数据库中检索数据。我想使用匿名类型并将其转换为Ilist,Array,ArrayList或Collection。数据在接受Ilist,arraylist或collection的第三方对象中使用。

我似乎无法使它正常工作。我收到以下错误,“类型'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();
}

最佳答案

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

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


这仍然会以相同的方式失败-因为这是该位的翻译:

x => x.LastName.Count()


导致问题的SQL。

更改为:

x => x.LastName.Length


我怀疑您会发现它可行。请注意,这实际上不是C#问题-仅仅是LINQ to SQL的翻译功能。

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

10-07 19:54
查看更多