Zunächst einmal habe ich diese Modelle: Executing Abfrage: "LINQ to Entitäten nicht erkennt Methode 'System.Object getItem (System.String)'"
Ich habe diese Abfrage in meinem Controller und I will das Abfrageergebnis in das Ansichtsmodell setzen:
var query = (from d in db.ObjectCategories
join a in db.MatchingObjects on d.Id equals a.ObjectCategoryId into grp3
join b in db.Unlocks
on d.Id equals b.ObjectCategoryId into grp1
from m in grp1.DefaultIfEmpty()
join c in db.Members
on m.StudentId equals c.Id into grp2
from n in grp2.DefaultIfEmpty()
where m.ObjectCategoryId == null
&& n.Id == null
&& n.Id == (int)Session["UserId"]
orderby d.Id
select new LockedCatListViewModel()
{
AnimalCategory = d.CategoryName,
AnimalCategoryId = d.Id,
Animals = d.MatchingObjects
}).AsEnumerable()
.Select(x=> new LockedCatListViewModel()
{
AnimalCategory = x.AnimalCategory,
AnimalCategoryId = x.AnimalCategoryId,
Animals = x.Animals
});
return View(query.ToList());
The view Modell:
public class LockedCatListViewModel
{
[Display(Name = "Animal Category Name")]
public string AnimalCategory { get; set; }
public int AnimalCategoryId { get; set; }
public virtual ICollection<MatchingObject> Animals { get; set; }
}
Jedes Mal, wenn ich in der Schleife das Element will Modell in Ansichtsseite oder Rückkehr gerade dieses Modells auf die Ansichtsseite, bekam ich folgende Fehlermeldung:
ich viele verschiedene Methoden versucht habe, frage ich mich, was in meiner LINQ-Abfrage, um getan werden soll, um das Ergebnis meiner LINQ-Abfrage erhalten?
Problem gelöst, indem Sie die Sitzung in eine Variable zuweisen und die Variable in den Linq einfügen.
Ich glaube, ich habe eine falsche LINQ-Abfrage für diesen Teil
&& n.Id == null
&& n.Id == (int)Session["UserId"]
Hallo, Ashley Medway danke für Ihre Antwort, es funktioniert wie ein Charme. –
Kein Problem, Sie werden feststellen, wann immer Sie eine Methode aufrufen müssen, die außerhalb von Linq ausgeführt werden muss und Session ["foo"] ist wirklich ein Methodenaufruf. –