linq查询生成不同的结果

时间:2013-04-24 05:56:55

标签: asp.net linq

我在linq查询表达式和其他lambda表达式中有linq查询但是两者都生成了不同的结果请告诉我什么是查询之间的差异

var result = from c in displayedCompanies
                     select new[] { Convert.ToString(c.CampusId), c.CampusName, c.CampusCode };

abouve查询生成以下结果

[["10","Ken Mazar Campus","01"],["20","Ken Kabul","02"]]

var result = displayedCompanies.Select(c => new { c.CampusId, c.CampusName, c.CampusCode });

此查询生成以下结果

[{"CampusId":10,"CampusName":"Ken Mazar Campus","CampusCode":"01"},
      {"CampusId":20,"CampusName":"Ken Kabul","CampusCode":"02"}]

在将结果转换为json后生成以下结果

2 个答案:

答案 0 :(得分:2)

select new[] { Convert.ToString(c.CampusId), c.CampusName, c.CampusCode }

上面创建了一个包含3个元素的数组。因此,linq查询返回一个数组

的数组
displayedCompanies.Select(c => new { c.CampusId, c.CampusName, c.CampusCode });

上面的查询创建了具有3个属性的anyonymus对象,即CampusId,CampusName,CampusCode等。当转换为json时,它会创建一个对象,从而返回一个对象数组。

答案 1 :(得分:1)

总之,你做的是这样的事情:

linq查询

displayedCompanies
            .Select (c => new String[] { Convert.ToString (c.CampusId), c.CampusName});

返回没有列名的数组结果,只返回值。

lambda表达

    displayedCompanies
             .Select (c => new {CampusId= c.CampusId, CampusName= c.CampusName})

返回列名。