C'est ma méthode qui me donne une erreur.
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();
}
}
Si je le change avec ceci:
public List<Project> GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString()))
{
var query = from pro in db.Projects
select pro;
return query.ToList();
}
}
Ensuite, cela fonctionne très bien sans erreur.
Pouvez-vous s'il vous plaît laissez-moi savoir que comment puis-je retourner uniquement ProjectId et ProjectName.
Merci.
La méthode ne peut pas retourner de type anonyme. Il doit être identique au type défini dans le type de retour de méthode. Vérifiez la signature de GetProjectForCombo et voyez quel type de retour vous avez spécifié.
Créez une classe ProjectInfo avec les propriétés requises puis, dans une nouvelle expression, créez un objet de type 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>();
}
}
Vous ne pouvez pas renvoyer de types anonymes d'une classe ... (Bien, vous pouvez, mais vous devez d'abord les convertir en objet, puis utiliser la réflexion de l'autre côté pour extraire les données). les données à contenir.
class ProjectNameAndId
{
public string Name { get; set; }
public string Id { get; set; }
}
Ensuite, dans votre déclaration 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>();
}
}
Ce qui est renvoyé est un type anonyme. Créez donc une nouvelle classe avec 2 champs.
class BasicProjectInfo {
string name;
string id;
}
et retournez new BasicProjectInfo(pro.ProjectName, pro.ProjectId);
. Votre méthode dans ce cas renverra un List<BasicProjectInfo>
La valeur de retour de votre méthode doit être un List<Project>
.
En utilisant select new
, vous créez une instance de type anonyme au lieu d'une Project
.
essayez cette solution pour moi son travail
public List<ProjectInfo> GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext
(DBHelper.GetConnectionString()))
{
return (from pro in db.Projects
select new { query }.query).ToList();
}
}
Vous pouvez le faire comme suit:
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>();
}
}