LINQ에서 새로 선택을 사용하여 목록 반환
이것은 나에게 오류를주는 내 방법입니다.
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();
}
}
이렇게 변경하면 :
public List<Project> GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString()))
{
var query = from pro in db.Projects
select pro;
return query.ToList();
}
}
그런 다음 오류없이 잘 작동합니다.
ProjectId와 ProjectName 만 반환 할 수있는 방법을 알려주세요.
감사.
메서드는 익명 형식을 반환 할 수 없습니다. 메소드 반환 유형에 정의 된 유형과 동일해야합니다. 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();
}
}
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>();
}
}
클래스에서 익명 형식을 반환 할 수 없습니다 ... (글쎄요, 할 수 있지만 먼저 객체로 캐스팅 한 다음 다른 쪽에서 리플렉션을 사용하여 데이터를 다시 가져와야합니다) 그래서 작은 클래스를 만들어야합니다. 포함 할 데이터.
class ProjectNameAndId
{
public string Name { get; set; }
public string Id { get; set; }
}
그런 다음 LINQ 문에서 :
select new ProjectNameAndId { Name = pro.ProjectName, Id = pro.ProjectId };
public List<Object> GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString()))
{
var query = from pro in db.Projects
select new {pro.ProjectName,pro.ProjectId};
return query.ToList<Object>();
}
}
What is being returned is an anonymous type so create a new class with 2 fields
class BasicProjectInfo {
string name;
string id;
}
and return new BasicProjectInfo(pro.ProjectName, pro.ProjectId);
. You method in this case will return a List<BasicProjectInfo>
Your method's return value has to be a List<Project>
.
Using select new
you are creating an instance of an anonymous type, instead of a Project
.
try this solution for me its working
public List<ProjectInfo> GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext
(DBHelper.GetConnectionString()))
{
return (from pro in db.Projects
select new { query }.query).ToList();
}
}
You can do it as following:
class ProjectInfo
{
public string Name {get; set; }
public long Id {get; set; }
ProjectInfo(string n, long id)
{
name = n; Id = id;
}
}
public List<ProjectInfo> GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString()))
{
var query = from pro in db.Projects
select new ProjectInfo(pro.ProjectName,pro.ProjectId);
return query.ToList<ProjectInfo>();
}
}
You're creating a new type of object therefore it's anonymous. You can return a dynamic.
public dynamic GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString()))
{
var query = from pro in db.Projects
select new { pro.ProjectName, pro.ProjectId };
return query.ToList();
}
}
ReferenceURL : https://stackoverflow.com/questions/6370028/return-list-using-select-new-in-linq
'program tip' 카테고리의 다른 글
테이블 행 오버플로를 숨기는 방법? (0) | 2021.01.06 |
---|---|
애니메이션으로 UITableViewCell을 추가 / 삭제 하시겠습니까? (0) | 2021.01.06 |
iPhone 앱용 여러 테마 / 스킨을 만드는 방법은 무엇입니까? (0) | 2021.01.06 |
상위 뷰 컨트롤러에서 모달 뷰 컨트롤러의 해제를 어떻게 감지 할 수 있습니까? (0) | 2021.01.06 |
단일 커밋의 일부로 여러 커밋을 되 돌리는 방법 (0) | 2021.01.06 |