LINQ:无法按 筛选列表<模型>数据.包含

本文关键字:模型 数据 包含 列表 筛选 LINQ | 更新日期: 2023-09-27 18:36:36

我有五个模型(表格)。我想选择Venue_Distrcit ID 为 1 的用户可以访问的所有培训。但我更喜欢如果可以用.包含像firstTrainingSet。我也练习过.Foreach 但无法修复正确的格式。

1. TRAINING                           2. TRAINING_VENUE              3. DISTRICT
   | ID | NAME | VENUE_ID |              | ID | NAME | DCODE |          | DCODE | NAME |
4. TRAINING_USER                      5.TRAINING_USER_DISTRICT_MAPPING
   |ID | NAME |                         | ID | USER_ID | DCODE|
var TRAINING_USER_ACCESSIBLE_DISTRICT_LIST = 
(from trainingUserDistrictMappingTable in db.TRAINING_USER_DISTRICT_MAPPING
where (trainingUserDistrictMappingTable.TRAINING_USER_ID  == 1)
select trainingUserDistrictMappingTable).ToList();
var trainingSet = db.TRAINING.Where(x => TRAINING_USER_ACCESSIBLE_DISTRICT_LIST.DCODE
         .Contains(x.TRAINING_VENUE.DCODE));

在这里我需要训练集。x.TRAINING_VENUE。DCODE 表示 x 是 TRAINING 参数,并且可以获取x.TRAINING_VENUE,因为 TRAINING 表VENUE_ID是 VENU 表 ID 中的外键,并且x.TRAINING_VENUE。DCODE是场地表中的DOCDE。这实际上是区表的主键。TRAINING_USER_ACCESSIBLE_DISTRICT_LIST是来自区表的列表。我不能做的是TRAINING_USER_ACCESSIBLE_DISTRICT_LIST。目录。包含(x.TRAINING_VENUE。目录)。

LINQ:无法按 筛选列表<模型>数据.包含

正如你所TRAINING_USER_ACCESSIBLE_DISTRICT_LIST是集合,所以表达式应该是:

var trainingSet = db.TRAINING
    .Where(x => TRAINING_USER_ACCESSIBLE_DISTRICT_LIST
               .Any(y => y.DECODE == x.TRAINING_VENUE.DCODE));

这将解决您的问题。