LINQ,如何指定包含 List<> 中的项目
好的,我试图从我的数据库中找到属于我提供的类别的所有子类别(使用查询结果整形)。我的类 SubCategory 包括一个 List<>类别。
问题在于,在 linq 语句中,g 指的是 SubCategory(最终包含 Category<>)。所以下面的说法是不允许的。
如何更改 Linq 语句以生成正确的 SQL 查询以包含包含匹配类别的所有子类别。
public class SubCategory
{
public int SubCategoryId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public List<Article> Articles { get; set; }
public List<Category> Categories { get; set; }
}
//incorrect code below:
var SubCategories = storeDB.SubCategories.Include("Categories").Single(g => g.Name == category);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这对我有用(也许太简单了):
This worked for me (maybe too simple):
我觉得有点令人困惑的是,每个子类别可以属于多个类别 - 您是否正确地理解了这种关系?
无论如何,我认为如果您首先将选择更改为在类别上工作,那么它可能更具可读性 - 即:
然后您可以执行它来获取 IEnumerable<>:
我发现它更具可读性/可理解性。
(我还发现这里的查询语法比流畅的风格更容易阅读)
I find it a bit confusing that each SubCategory can belong to more than one Category - have you got this relationship the right way around?
Regardless, I think its probably more readable if you change the select to work on Categories first - i.e. something like:
which you can then execute to get your IEnumerable<>:
I find that much more readable/understandable.
(I also find the query syntax easier to read here than the fluent style)
我的首选答案是使用 linq join。如果只有 2 个数据集,您可以使用 linq 操作
.join
和.groupjoin
与 from 语句。这就是我的做法。my preferred answer would be to use a linq join. if there aren't but 2 data sets you can use the linq operations
.join
and.groupjoin
vs a from statement. this would be my approach.