Возвратный список с использованием выбора нового в LINQ

Это мой метод, который дает мне ошибку.

public List 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 GetProjectForCombo() { using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString())) { var query = from pro in db.Projects select pro; return query.ToList(); } } 

Тогда он отлично работает без ошибок.

Не могли бы вы сообщить мне, как я могу вернуть только ProjectId и ProjectName.

Благодарю.

Метод не может возвращать анонимный тип. Он должен быть таким же, как тип, определенный в типе возвращаемого метода. Проверьте подпись GetProjectForCombo и посмотрите, какой тип возврата вы указали.

Создайте class ProjectInfo с требуемыми свойствами, а затем в новом выражении создайте объект типа ProjectInfo.

 class ProjectInfo { public string Name {get; set; } public long Id {get; set; } } public List 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 GetProjectForCombo() { using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString())) { var query = db.Project .Select,ProjectInfo>(p=> return new ProjectInfo{Name=p.ProjectName, Id=p.ProjectId); return query.ToList(); } - public List GetProjectForCombo() { using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString())) { var query = db.Project .Select,ProjectInfo>(p=> return new ProjectInfo{Name=p.ProjectName, Id=p.ProjectId); return query.ToList(); } 

}

Вы не можете возвращать анонимные типы из classа … (Ну, вы можете, но сначала вы должны перенести их на объект, а затем использовать reflection на другой стороне, чтобы получить данные снова), поэтому вам нужно создать небольшой class для данные, которые должны содержаться внутри.

 class ProjectNameAndId { public string Name { get; set; } public string Id { get; set; } } 

Затем в вашем заявлении LINQ:

 select new ProjectNameAndId { Name = pro.ProjectName, Id = pro.ProjectId }; 
 public List GetProjectForCombo() { using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString())) { var query = from pro in db.Projects select new {pro.ProjectName,pro.ProjectId}; return query.ToList(); } } 

То, что возвращается, является анонимным типом, поэтому создайте новый class с двумя полями

 class BasicProjectInfo { string name; string id; } 

и вернуть new BasicProjectInfo(pro.ProjectName, pro.ProjectId); , Вы в этом случае List

Возвращаемое значение вашего метода должно быть List .

Используя select new вы создаете экземпляр анонимного типа вместо Project .

Вы можете сделать это следующим образом:

 class ProjectInfo { public string Name {get; set; } public long Id {get; set; } ProjectInfo(string n, long id) { name = n; Id = id; } } public List 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(); } } 

попробуйте это решение для меня

  public List GetProjectForCombo() { using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString())) { return (from pro in db.Projects select new { query }.query).ToList(); } } 

Вы создаете новый тип объекта, поэтому он анонимный. Вы можете вернуть динамический.

 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(); } } 
  • NHibernate vs LINQ to SQL
  • Исключение с использованием CopyToDataTable с помощью «нового {..}» запроса LINQ
  • Перечислить сложную сортировку
  • String.Equals () не работает по назначению
  • Методы расширения должны быть определены в неэквивалентном статическом classе
  • генерировать EF orderby Выражение строкой
  • Выберите выделение, используя linq
  • Linq to Objects - возвращает пары чисел из списка чисел
  • Как выбрать только записи с наивысшей датой в LINQ
  • «Лямбда-выражение с телом оператора не может быть преобразовано в дерево выражений»
  • LINQ, Невозможно создать постоянное значение типа XXX. В этом контексте поддерживаются только примитивные типы или типы перечислений
  • Давайте будем гением компьютера.