You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LINQ中基于关联表IncludedID筛选TourPackage?

没问题!这在LINQ里完全可以实现,而且有两种常见的筛选逻辑,看你具体需求来选:

情况1:筛选包含至少一个目标关联项的套餐

如果你想保留那些关联项里只要有任意一个IncludedID在[1,2,3]集合中的TourPackage,可以用Any结合Contains来实现:

首先定义目标ID集合:

var targetIncludedIds = new List<int> { 1, 2, 3 };

然后编写LINQ查询:

var filteredPackages = tourPackages
    .Where(package => package.IncludedItems
        // 检查当前套餐的关联项中是否存在符合条件的项
        .Any(item => targetIncludedIds.Contains(item.Included.IncludedID)))
    .ToList();

情况2:筛选必须包含所有目标关联项的套餐

如果你需要的是那些关联项里同时包含IncludedID=1、2、3的套餐(三个ID的项都得有),可以嵌套使用All和Any:

var filteredPackages = tourPackages
    .Where(package => targetIncludedIds
        // 确保目标集合中的每一个ID,在当前套餐的关联项里都能找到匹配项
        .All(id => package.IncludedItems
            .Any(item => item.Included.IncludedID == id)))
    .ToList();

额外注意(针对ORM场景,比如EF Core)

如果你的tourPackages是从数据库查询来的,记得要预加载导航属性,避免懒加载导致的性能问题:

using Microsoft.EntityFrameworkCore;

// 先预加载IncludedItems和对应的Included数据
var tourPackages = _context.TourPackages
    .Include(p => p.IncludedItems)
        .ThenInclude(i => i.Included)
    .ToList();

// 再执行上面的筛选逻辑

内容的提问来源于stack exchange,提问作者Isha John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:22:05