gpt4 book ai didi

linq - EF - 无法从 System.Linq.IQueryable 转换为 System.Data.Objects.ObjectQuery

转载 作者:行者123 更新时间:2023-12-01 11:56:30 25 4
gpt4 key购买 nike

在我使用 .Except 方法时,我需要从 allCategories 中减去 contentCategories 的结果,但我收到一个错误。

知道我做错了什么......非常感谢

Error   2   Argument 1: cannot convert from 'System.Linq.IQueryable<System.Data.Objects.DataClasses.EntityCollection<WebProject.DataAccess.DatabaseModels.CmsCategory>>' to 'System.Data.Objects.ObjectQuery<WebProject.DataAccess.DatabaseModels.CmsCategory>'

            int contentId = Int32.Parse(uxContentsListSelector.SelectedValue);
var allCategories = from category in context.CmsCategories select category;
var contentCategories = from content in context.CmsContents
where content.ContentId == contentId
select content.CmsCategories;
var result = context.CmsCategories.Except(contentCategories);

最佳答案

您需要添加一个额外的 from in 子句以获得扁平化列表。

var contentCategories = from content in context.CmsContents
from cat in content.CmsCategories
where content.ContentId == contentId
select cat;

然后我会将您的Except 方法更改为Any 方法

var result = context.CmsCategories.Where(cat => !contentCategories.Any(c => c.CategoryId == cat.CategoryId));

关于linq - EF - 无法从 System.Linq.IQueryable 转换为 System.Data.Objects.ObjectQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6651230/

25 4 0