如何将linq结果作为字符串数组获取?

如何将linq结果作为字符串数组获取?,linq,arrays,json,Linq,Arrays,Json,我想将用户属性列表转换为字符串数组(对于json接收器),如下所示: 但我希望它是一个普通字符串数组,比如: [["1","Doe","John"] ["2","Smith","Adam"], ...] 如何将linq结果强制转换为字符串数组 var jsonData = from user in users select new[] { user.Id.ToString(), user.Person.

我想将用户属性列表转换为字符串数组(对于json接收器),如下所示:

但我希望它是一个普通字符串数组,比如:

[["1","Doe","John"]
 ["2","Smith","Adam"], ...]
如何将linq结果强制转换为字符串数组

var jsonData = from user in users
               select new[] { user.Id.ToString(),
                              user.Person.Lastname,
                              user.Person.Firstname };
或者,您可以使用lambda语法:

var jsonData = users.Select(user => new[] { user.Id.ToString(),
                                            user.Person.Lastname,
                                            user.Person.Firstname });

我使用
IQueryable
作为创建值数组的起点,而不是
列表
,但在任何一种情况下,您都可以序列化匿名对象数组,而不是字符串数组,以获得相同的结果,而无需将值强制转换为字符串:

e、 g

在我的实例中,我还将结果客户端与jQuery
dataTable
,因此需要将结果包装在另一个匿名对象中(属性名为
aadata

e、 g


希望这将帮助其他人找到这个问题,寻找这个问题的
dataTable
特定版本(就像我一样)。

谢谢,你的两个建议都很好:)不管怎样,我以前尝试过这样的字符串数组,但最后出现了一些奇怪的索引错误。你的代码也是如此,然后我意识到我的数据源返回了IQueryable对象,这就是问题所在——users.ToList()解决了这个问题。不管怎么说,你的回答很有帮助。谢谢。仅供参考,这个精确的解决方案不适合我,因为我混合了数字类型。(我收到一个错误,说编译器无法确定数组的类型。)但我使用了“new object[]”,这解决了我的问题。@Mike:是的,这正是我在
user.Id
上调用
.ToString()
的原因,我假设它是一个整数。要使
new[]
正常工作,编译器应该能够从传递给它的对象推断数组的类型。如果它们的类型不兼容,编译器就会抱怨;我错过了。在我的例子中,我必须将数据传递到一个数据集中,我希望它是原始格式(而不是字符串)。因此,我只是想确保人们知道“选择新对象[]{…}”是一个选项。当我尝试使用ToString()
数组类型“System.object[]”时,在查询结果中无法初始化,因此出现了此错误。考虑使用Stasy.Cuff.Gual.List< <代码> 1 [ Stase.Obj]。
var jsonData = from user in users
               select new[] { user.Id.ToString(),
                              user.Person.Lastname,
                              user.Person.Firstname };
var jsonData = users.Select(user => new[] { user.Id.ToString(),
                                            user.Person.Lastname,
                                            user.Person.Firstname });
var jsonData = users.Select(user => new object[] { 
                    user.Id,
                    user.Person.Lastname,
                    user.Person.Firstname 
               });
return Json(new { aaData = jsonData }, JsonRequestbehavior.AllowGet);