Tôi có truy vấn LINQ to EF trả về dữ liệu ở dạng lớp. Lớp học có thuộc tính List<RecipeCategories>
mà tôi cần điền. Bảng RecipeCategories là một bảng quan hệ giữa bảng Công thức và bảng RecipeCategories, và có thể là nhiều bảng. Tôi tìm thấy đủ thông tin để lấy mã để biên dịch, nhưng nó sai sót trong thời gian chạy và tôi đã không thể tìm ra cách để có được quyền này.Lấy bộ sưu tập phụ trong Danh sách <class> biểu mẫu
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();
Đây là lỗi tôi nhận được.
LINQ to Entities không nhận ra phương pháp 'System.Collections.Generic.List
1[RecipeCategoryItem] ToList[RecipeCategoryItem](System.Collections.Generic.IEnumerable
1 [RecipeCategoryItem])' và phương pháp này không thể được dịch sang biểu thức cửa hàng.
Phần mà tôi đang làm là dòng này.
RecipeCategories = r.RecipeCategories.Select(i => new RecipeCategoryItem { Id = i.ID, CategoryName = i.categoryName }).ToList()
Công thức Danh mục là tài sản List<RecipeCategoryItem>
.
Là những gì tôi đang cố gắng làm điều đó, và nếu có thì làm cách nào?
Cảm ơn bạn.
Tôi đã cố gắng cách thứ hai của mình trước đây, nhưng c.Công thức không phơi bày bất kỳ trường nào, và tôi nghĩ đó là vì bảng quan hệ không thực sự hiển thị trong mô hình dữ liệu vì nó là một bảng liên kết giữa các công thức nấu ăn và các danh mục đối ứng. Tôi đã thử cách đầu tiên bạn nói, nhưng tôi không chắc chắn làm thế nào để cấu trúc truy vấn LINQ bây giờ. Đây là những gì tôi có. [CODE] RecipeCategories = r.RecipeCategories.Select (i => new RecipeCategoryItem {Id = i.ID, CategoryName = i.categoryName}) [/ CODE] – Ben
Nhận xét cuối cùng đã hết thời gian chờ. Tôi gặp lỗi này. Không thể chuyển đổi IEnumerable thành RecipeCategoryItems –
Ben
@Ben: Có vẻ như Recipes và RecipeCategories có mối quan hệ nhiều-nhiều, sau đó? Tôi đã chỉnh sửa câu trả lời của mình cho phù hợp. Hãy cho tôi biết làm thế nào mà làm việc cho bạn. Với cách đầu tiên tôi đã nói, bạn sẽ cần phải sử dụng một kiểu ẩn danh bằng cách thay đổi 'select new RecipeItem {' to 'select new {'. Sau đó, bước thứ hai của bạn là lấy đối tượng ẩn danh này và tạo một RecipeItem mới dựa trên dữ liệu của nó. – StriplingWarrior