C# 在LINQ中仅将某些列返回给JSON
我不想返回JSON中的整个表。我只想要以下列:C# 在LINQ中仅将某些列返回给JSON,c#,asp.net,json,linq,C#,Asp.net,Json,Linq,我不想返回JSON中的整个表。我只想要以下列:ProjectContactFirstName,ProjectContactLastName,但我尝试的都不起作用。这是我的密码: [WebMethod] public static string getProjectByID(int id) { using (dbPSREntities4 myEntities = new dbPSREntities4()) { var thisProject = myEntities
ProjectContactFirstName
,ProjectContactLastName
,但我尝试的都不起作用。这是我的密码:
[WebMethod]
public static string getProjectByID(int id)
{
using (dbPSREntities4 myEntities = new dbPSREntities4())
{
var thisProject = myEntities.tbProjects.Where(x => x.ProjectID == id).ToList();
JavaScriptSerializer serializer = new JavaScriptSerializer();
var json = serializer.Serialize(thisProject);
return json; <--- here I need to say what columns to return but nothing will work. Thanks!
}
}
[WebMethod]
公共静态字符串getProjectByID(int id)
{
使用(dbPSREntities4 myenties=new dbPSREntities4())
{
var thisProject=myenties.tbProjects.Where(x=>x.projectd==id.ToList();
JavaScriptSerializer serializer=新的JavaScriptSerializer();
var json=serializer.Serialize(thisProject);
返回json;使用选择方法将项目实体投影到具有ProjectContactFirstName和ProjectContactLastName属性的匿名对象:
[WebMethod]
public static string getProjectByID(int id)
{
using (dbPSREntities4 myEntities = new dbPSREntities4())
{
var thisProject =
myEntities.tbProjects
.Where(p => p.ProjectID == id)
.Select(p => new {
p.ProjectContactFirstName,
p.ProjectContactLastName
}).ToList();
JavaScriptSerializer serializer = new JavaScriptSerializer();
var json = serializer.Serialize(thisProject);
return json;
}
}
这种类型的投影有一个好处-它发生在数据库端,并且只有这两个字段将从数据库加载。匿名对象的序列化将为您提供在投影期间选择的列
顺便说一句,如果您是按id选择项目,可能需要使用FirstOrDefault()
而不是ToList()
?使用Select
方法将项目实体投影到具有ProjectContactFirstName和ProjectContactLastName属性的匿名对象:
[WebMethod]
public static string getProjectByID(int id)
{
using (dbPSREntities4 myEntities = new dbPSREntities4())
{
var thisProject =
myEntities.tbProjects
.Where(p => p.ProjectID == id)
.Select(p => new {
p.ProjectContactFirstName,
p.ProjectContactLastName
}).ToList();
JavaScriptSerializer serializer = new JavaScriptSerializer();
var json = serializer.Serialize(thisProject);
return json;
}
}
这种类型的投影有一个好处-它发生在数据库端,并且只有这两个字段将从数据库加载。匿名对象的序列化将为您提供在投影期间选择的列
顺便说一句,因此您要按id选择项目,可能需要使用FirstOrDefault()
而不是ToList()
?在将对象传递给序列化程序之前,您必须过滤列:
[WebMethod]
public static string getProjectByID(int id)
{
using (dbPSREntities4 myEntities = new dbPSREntities4())
{
var thisProject = myEntities.tbProjects.Where(x => x.ProjectID == id);
var columns = thisProject.Select(x => new { x.ProjectContactFirstName, x.ProjectContactLastName }).ToList();
JavaScriptSerializer serializer = new JavaScriptSerializer();
var json = serializer.Serialize(columns);
return json;
}
}
在将对象传递给序列化程序之前,必须过滤列:
[WebMethod]
public static string getProjectByID(int id)
{
using (dbPSREntities4 myEntities = new dbPSREntities4())
{
var thisProject = myEntities.tbProjects.Where(x => x.ProjectID == id);
var columns = thisProject.Select(x => new { x.ProjectContactFirstName, x.ProjectContactLastName }).ToList();
JavaScriptSerializer serializer = new JavaScriptSerializer();
var json = serializer.Serialize(columns);
return json;
}
}
使用.ToArray
而不是.ToList
此处更有效。使用.ToArray
而不是.ToList
此处更有效。