Asp.net 尝试从中间层类传回LINQ查询
需要一些帮助来破译从驻留在中间层类中的LINQ查询传回数据的正确方法 我可以很好地使用第一个查询,但无法从父实体或项目实体中选择任何特定列Asp.net 尝试从中间层类传回LINQ查询,asp.net,linq,entity-framework-5,Asp.net,Linq,Entity Framework 5,需要一些帮助来破译从驻留在中间层类中的LINQ查询传回数据的正确方法 我可以很好地使用第一个查询,但无法从父实体或项目实体中选择任何特定列 public List<Project> GetProjects() { try { using (YeagerTechEntities DbContext = new YeagerTechEntities()) {
public List<Project> GetProjects()
{
try
{
using (YeagerTechEntities DbContext = new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled = false;
DbContext.Database.Connection.Open();
IEnumerable<Project> project = DbContext.Projects.Where(p => p.ProjectID > 0);
List<Project> myProjects = new List<Project>();
myProjects = project.ToList();
return myProjects;
}
}
catch (Exception ex)
{
throw ex;
}
}
下面是修改后的LINQ查询,我从中得到了错误:
public List<Project> GetProjects()
{
try
{
using (YeagerTechEntities DbContext = new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled = false;
DbContext.Database.Connection.Open();
IEnumerable<Project> project = DbContext.Projects.Where(p => p.ProjectID > 0);
ProjectFields projflds = new ProjectFields();
var proj = project.Select(s => new
{
projflds.CategoryID = s.CategoryID,
projflds.Quote = s.Quote,
projflds.Name = s.Name,
projflds.PriorityName = priname = s.Priority.Description,
projflds.CategoryName = catname = s.Category.Description,
projflds.StatusName = statname = s.Status.Description,
projflds.Email = s.Customer.Email,
projflds.City = s.Customer.City
});
List<Project> myProjects = new List<Project>();
myProjects = project.ToList();
return myProjects;
}
}
catch (Exception ex)
{
throw ex;
}
}
public List GetProjects()
{
尝试
{
使用(YeagerTechEntities DbContext=new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled=false;
DbContext.Database.Connection.Open();
IEnumerable project=DbContext.Projects.Where(p=>p.ProjectID>0);
ProjectFields projflds=新的ProjectFields();
var proj=project.Select(s=>new
{
projflds.CategoryID=s.CategoryID,
projflds.Quote=s.Quote,
projflds.Name=s.Name,
projflds.PriorityName=priname=s.Priority.Description,
projflds.CategoryName=catname=s.Category.Description,
projflds.StatusName=statname=s.Status.Description,
projflds.Email=s.Customer.Email,
projflds.City=s.Customer.City
});
List myProjects=new List();
myProjects=project.ToList();
归还我的项目;
}
}
捕获(例外情况除外)
{
掷骰子;
}
}
您正在使用select new属性创建一个匿名类型,这就是该属性与project类不同的原因。下面将创建一个新类型,因此首先您需要列出一个列表,您不能直接强制转换该类型
var proj = project.Select(s => new
{
s.CategoryID,
s.Quote,
s.Name,
priname = s.Priority.Description,
catname = s.Category.Description,
statname = s.Status.Description,
s.Customer.Email,
s.Customer.City
}
做一些类似下面链接的事情
您正在使用select new属性创建一个匿名类型,这就是为什么该属性与project类不同的原因。下面将创建一个新类型,因此首先您需要列出一个列表,您不能直接强制转换该类型
var proj = project.Select(s => new
{
s.CategoryID,
s.Quote,
s.Name,
priname = s.Priority.Description,
catname = s.Category.Description,
statname = s.Status.Description,
s.Customer.Email,
s.Customer.City
}
做一些类似下面链接的事情
您就快到了,只有几个最后的修复:
public List<ProjectFields> GetProjects()
{
try
{
using (YeagerTechEntities DbContext = new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled = false;
DbContext.Database.Connection.Open();
IQueryable<Project> project = DbContext.Projects.Where(p => p.ProjectID > 0);
var proj = project.Select(s => new ProjectFields
{
CategoryID = s.CategoryID,
Quote = s.Quote,
Name = s.Name,
PriorityName = s.Priority.Description,
CategoryName = s.Category.Description,
StatusName = s.Status.Description,
Email = s.Customer.Email,
City = s.Customer.City
});
List<ProjectFields> myProjects = project.ToList();
return myProjects;
}
}
catch (Exception ex)
{
throw ex;
}
}
public List GetProjects()
{
尝试
{
使用(YeagerTechEntities DbContext=new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled=false;
DbContext.Database.Connection.Open();
IQueryable project=DbContext.Projects.Where(p=>p.ProjectID>0);
var proj=project。选择(s=>newprojectfields
{
CategoryID=s.CategoryID,
Quote=s.Quote,
Name=s.Name,
PriorityName=s.Priority.Description,
CategoryName=s.Category.Description,
StatusName=s.Status.Description,
Email=s.Customer.Email,
城市=s.Customer.City
});
List myProjects=project.ToList();
归还我的项目;
}
}
捕获(例外情况除外)
{
掷骰子;
}
}
您就快到了,只有两个最终修复:
public List<ProjectFields> GetProjects()
{
try
{
using (YeagerTechEntities DbContext = new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled = false;
DbContext.Database.Connection.Open();
IQueryable<Project> project = DbContext.Projects.Where(p => p.ProjectID > 0);
var proj = project.Select(s => new ProjectFields
{
CategoryID = s.CategoryID,
Quote = s.Quote,
Name = s.Name,
PriorityName = s.Priority.Description,
CategoryName = s.Category.Description,
StatusName = s.Status.Description,
Email = s.Customer.Email,
City = s.Customer.City
});
List<ProjectFields> myProjects = project.ToList();
return myProjects;
}
}
catch (Exception ex)
{
throw ex;
}
}
public List GetProjects()
{
尝试
{
使用(YeagerTechEntities DbContext=new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled=false;
DbContext.Database.Connection.Open();
IQueryable project=DbContext.Projects.Where(p=>p.ProjectID>0);
var proj=project。选择(s=>newprojectfields
{
CategoryID=s.CategoryID,
Quote=s.Quote,
Name=s.Name,
PriorityName=s.Priority.Description,
CategoryName=s.Category.Description,
StatusName=s.Status.Description,
Email=s.Customer.Email,
城市=s.Customer.City
});
List myProjects=project.ToList();
归还我的项目;
}
}
捕获(例外情况除外)
{
掷骰子;
}
}
“转换匿名类型#1”:定义一个新类,该类具有您希望在该对象中使用的显式属性,而不仅仅是执行新建{property1=…}
,即,您可以在层之间传递类型定义。或者这是一个项目
只填充了较少的字段-你能使用它吗?上周五我试图编辑,但没有通过。如果您可以投票支持编辑以显示它,它将显示我尝试此技术时遇到的错误,因此,最终通过您的反馈解决错误。请投票支持编辑。去掉try/catch块。“转换匿名类型#1”:定义一个新的类,该类具有您希望在该对象中使用的显式属性,而不仅仅是执行new{property1=…}
,也就是说,您可以在层之间传递类型定义。或者这是一个项目
只填充了较少的字段-你能使用它吗?上周五我试图编辑,但没有通过。如果您可以投票支持编辑以显示它,它将显示我尝试此技术时遇到的错误,因此,最终通过您的反馈解决错误。请投票支持编辑。去掉try/catch块。它只成功地弄乱了堆栈跟踪。我上周五添加了一个修订,但没有通过。我又添加了一次,所以你可以看到它,因为在尝试了你的建议后,我遇到了一个错误…我上周五试图编辑,但没有通过。如果您可以投票支持编辑以显示它,它将显示我尝试此技术时遇到的错误,因此,最终通过您的反馈解决错误。请投票支持编辑。我认为这个想法是如果你需要一个实质性的答案,那么你就把它编辑成问题。我在今天的编辑中已经这样做了。不,我们的想法是将返回类型更改为ProjectFields
并执行project。选择(s=>newprojectfiel
var proj = project.Select(s => new Project
{
Name=s.Name
}
public List<ProjectFields> GetProjects()
{
try
{
using (YeagerTechEntities DbContext = new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled = false;
DbContext.Database.Connection.Open();
IQueryable<Project> project = DbContext.Projects.Where(p => p.ProjectID > 0);
var proj = project.Select(s => new ProjectFields
{
CategoryID = s.CategoryID,
Quote = s.Quote,
Name = s.Name,
PriorityName = s.Priority.Description,
CategoryName = s.Category.Description,
StatusName = s.Status.Description,
Email = s.Customer.Email,
City = s.Customer.City
});
List<ProjectFields> myProjects = project.ToList();
return myProjects;
}
}
catch (Exception ex)
{
throw ex;
}
}