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