Impossible de convertir l'expression lambda de type 'string', car il n'est pas un type délégué
Je suis en train de construire une page qui affiche une requête LINQ résultat sous forme de tableau.
- Installation de la requête de base de la "SetupArticleQuery () méthode qui enregistre la requête" ce.articles".
- Exécuter une autre méthode, 'UpdateFilter()' pour effectuer un filtrage sur les résultats qui sont enregistrés dans les " ce.articles".
Je reçois le message d'erreur
Ne peut pas convertir expression lambda de type 'string', car il n'est pas un type délégué
à la ligne avec le code
this.articles = from art in this.articles
where art.category_id == this.categoryId
select art;
Toutes les idées sur la façon de corriger le code ci-dessous?
namespace WebApplication3 {
public partial class _Default : System.Web.UI.Page {
private IQueryable articles;
protected void Page_Load(object sender, EventArgs e) {
this.SetupArticleQuery();
this.UpdateFilter();
}
private void SetupArticleQuery() {
this.articles = from a in KB.Articles
join t in KB.Teams on a.primary_team_id equals t.id
join cat in KB.Categories on a.category_id equals cat.id
join scat in KB.SubCategories on a.subcategory_id equals scat.id
join top in KB.Topics on a.topic_id equals top.id
select new {
a.id,
a.title,
a.view_count,
a.created_at,
a.created_by,
a.primary_team_id,
primary_team_name = t.name,
category_id = cat.id,
category_name = cat.name,
subcategory_id = scat.id,
subcategory_name = scat.name,
topic_id = top.id,
topic_name = top.name
};
}
private void UpdateFilter() {
if (this.categoryId > 0) {
this.articles = from art in this.articles
where art.category_id == this.categoryId
select art;
}
}
}
J'ai eu le même problème parce que j'ai été tout simplement manquantes à l'aide de mon Système.Linq;
OriginalL'auteur Damiro | 2011-03-31
Vous devez vous connecter pour publier un commentaire.
Cette requête:
Ne fonctionne pas comme cela, car il renvoie à un type anonyme. Comme un résultat, vous auriez à le taper comme
var
, ce qui n'est pas valide pour la classe de membres de niveau; vous pouvez seulement utiliser la var pour les variables locales.Ce que vous devez faire est de créer une classe réelle de tenir votre projection, et avoir quelque chose comme:
À partir de là, peut-être vous avez:
Et bien sûr, cela.articles déclare que
IQueryable<LocalDTO>
.OriginalL'auteur Adam Rackis
J'ai dû ajouter ce qui suit pour obtenir cette erreur de s'en aller.
Génial - c'était la solution exacte. Merci!
OriginalL'auteur Asa Julian
En fait, je n'ai pas trouvé de problème dans votre code.
De cette réponse, je vous propose de confirmer que vous avez ajouté:
Bonne chance!
OriginalL'auteur Homam
Si c'est un problème avec les types anonymes, pouvez-vous faire quelque chose comme cela?
Il pourrait être hors de la base, depuis le sous-jacent lambda est la même.
OriginalL'auteur Josh Anderson