Ich habe eine LINQ to EF-Abfrage, die Daten in einer Klassenform zurückgibt. Die Klasse hat eine List<RecipeCategories>
Eigenschaft, die ich füllen muss. Die RecipeCategories-Tabelle ist eine Beziehungstabelle zwischen der Rezepttabelle und der RecipeCategories-Tabelle und kann viele bis viele enthalten. Ich habe genug Informationen gefunden, um den Code kompilieren zu lassen, aber er hat Fehler zur Laufzeit und ich konnte nicht herausfinden, wie ich das richtig machen kann.Untergruppe in Liste abrufen <class> Formular
ri = (from r in recipeData.Recipes
where r.ID == recipeId
select new RecipeItem
{
Id = r.ID,
ProductId = r.Product.ID,
RecipeName = r.recipeName,
RecipeDescription = r.recipeDescription,
Servings = r.servings.HasValue ? r.servings.Value : 0,
CreatedDate = r.createdDate,
PrepTime = r.prepTime.HasValue ? r.servings.Value : 0,
CookTime = r.cookTime.HasValue ? r.servings.Value : 0,
Approved = r.approved,
RecipeInstructions = r.recipeInstructions,
RecipeIngredients = r.recipeIngredients,
RecipeCategories = r.RecipeCategories.Select(i => new RecipeCategoryItem { Id = i.ID, CategoryName = i.categoryName }).ToList()
}).First();
Dies ist der Fehler, den ich bekomme.
LINQ to Entities nicht das Verfahren erkennen 'System.Collections.Generic.List
1[RecipeCategoryItem] ToList[RecipeCategoryItem](System.Collections.Generic.IEnumerable
1 [RecipeCategoryItem])' Methode, und diese Methode nicht in einen Laden Ausdruck übersetzt werden kann.
Der Teil, an dem ich arbeite, ist diese Linie.
RecipeCategories = r.RecipeCategories.Select(i => new RecipeCategoryItem { Id = i.ID, CategoryName = i.categoryName }).ToList()
RecipeCategories ist eine List<RecipeCategoryItem>
Eigenschaft.
Ist was ich versuche zu tun, und wenn ja, wie?
Vielen Dank.
ich vor Ihrer zweite Art und Weise versucht hatte, aber c.Das Rezept macht keine Felder verfügbar, und ich denke, das liegt daran, dass die Beziehungstabelle nicht wirklich im Datenmodell angezeigt wird, da es sich um eine Verknüpfungstabelle zwischen Rezepten und Rezeptkategorien handelt. Ich habe es auf die erste Art und Weise versucht, wie du es gesagt hast, aber ich bin mir nicht sicher, wie ich die linq-Abfrage jetzt strukturieren soll. Das habe ich. [CODE] RecipeCategories = r.RecipeCategories.Select (i => neues RecipeCategoryItem {Id = i.ID, CategoryName = i.categoryName}) [/ CODE] – Ben
Letzter Kommentar abgelaufen. Ich bekomme diesen Fehler. IEnumerable kann nicht in RecipeCategoryItems konvertiert werden –
Ben
@Ben: Es hört sich so an, als hätten Recipes und RecipeCategories eine Viele-zu-Viele-Beziehung? Ich habe meine Antwort entsprechend bearbeitet. Lass mich wissen, wie das für dich funktioniert. Mit dem ersten Weg, den ich gesagt habe, müssen Sie einen anonymen Typ verwenden, indem Sie 'neues RezeptItem auswählen <' zu 'neu wählen {'. Dann wäre der zweite Schritt, dieses anonyme Objekt zu nehmen und basierend auf seinen Daten ein neues Rezeptobjekt zu erstellen. – StriplingWarrior