【发布时间】:2021-12-09 06:15:21
【问题描述】:
我正在尝试从用户过滤一个或多个标签的多对多表中实现一些过滤功能。我目前有以下查询(从我正在使用的版本简化):
var query = from adm in admissionContext.SampleTable
from tag in admissionContext.SampleTags.Where(t => t.SampleID == adm.ID).DefaultIfEmpty()
from tagItem in admissionContext.SampleTagElements.Where(i => i.ID == tag.ElementID).DefaultIfEmpty()
where searchFilter.TagIDs.Count == 0 || searchFilter.TagIDs.Contains(tag.ElementID)
select new SampleInfo
{
ID = adm.ID,
ReferralTags = tagItem != null ? tagItem.TagText : string.Empty,
};
过滤工作正常,并且有额外的逻辑将结果按其 SampleTableID 分组以将结果合并在一起,但如果有多个标签针对 SampleTable 记录,则仅检索一个(包含检查的结果)并显示在 UI 中,但我希望它也返回相同 SampleID 下的所有相关 SampleTag。但我不确定 LINQ to entity 语法是做什么的。
这是更大查询的一部分,因此理想情况下我需要坚持使用 LINQ to entity。
【问题讨论】:
标签: c# entity-framework linq linq-to-entities