如何将linq结果作为字符串数组获取?
我想将用户属性列表转换为字符串数组(对于json接收器),如下所示: 但我希望它是一个普通字符串数组,比如:如何将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.
[["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
在我的实例中,我还将结果客户端与jQuerydataTable
,因此需要将结果包装在另一个匿名对象中(属性名为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);