这是我的方法,它给了我错误.
public List<Project> GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString()))
{
var query = from pro in db.Projects
select new { pro.ProjectName, pro.ProjectId };
return query.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我改变它:
public List<Project> GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString()))
{
var query = from pro in db.Projects
select pro;
return query.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
然后它工作正常没有错误.
能告诉我,我怎样才能返回ProjectId和ProjectName.
谢谢.
Muh*_*han 113
方法不能返回匿名类型.它必须与方法返回类型中定义的类型相同.检查GetProjectForCombo的签名并查看您指定的返回类型.
创建一个具有必需属性的ProjectInfo类,然后在新表达式中创建ProjectInfo类型的对象.
class ProjectInfo
{
public string Name {get; set; }
public long Id {get; set; }
}
public List<ProjectInfo> GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString()))
{
var query = from pro in db.Projects
select new ProjectInfo(){ Name = pro.ProjectName, Id = pro.ProjectId };
return query.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
public List<Object> GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString()))
{
var query = db.Project
.Select<IEnumerable<something>,ProjectInfo>(p=>
return new ProjectInfo{Name=p.ProjectName, Id=p.ProjectId);
return query.ToList<Object>();
}
Run Code Online (Sandbox Code Playgroud)
}
你不能从类中返回匿名类型...(嗯,你可以,但你必须先将它们转换为对象,然后再使用另一侧的反射来重新获取数据)所以你必须创建一个小类要包含的数据.
class ProjectNameAndId
{
public string Name { get; set; }
public string Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后在你的LINQ语句中:
select new ProjectNameAndId { Name = pro.ProjectName, Id = pro.ProjectId };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
303072 次 |
| 最近记录: |