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

使用LINQ判断列表值是否存在于另一列表时出现CS1929错误如何解决

错误原因

你编写的查询中,Contains()方法的入参类型错误导致报错:
Contains()方法要求传入单个与序列元素类型匹配的对象,但你传入的是(from item in hostelStops select item.hostelName )返回的整个IEnumerable<>集合,类型不匹配,编译器无法找到对应的重载方法,因此抛出CS1929错误。

解决方案

首先提前提取所有hostelName的集合,建议转HashSet<>提升查询效率:

var allHostelNames = hostelStops.Select(item => item.hostelName).ToHashSet();

场景1:对taskList每个条目,判断该条目的taskStart是否包含至少一个匹配的hostelName

var result = taskList.Select(row => new
{
    dutyName = row.dutyName,
    isHostelExist = row.taskStart.Any(placeId => allHostelNames.Contains(placeId))
}).ToList();

返回的result中每个条目对应原taskList的条目,isHostelExist字段标识该任务的taskStart是否存在匹配的hostelName。

场景2:全局判断是否存在任意一个hostelName出现在任意task的taskStart中

bool isAnyExist = taskList
    .SelectMany(row => row.taskStart)
    .Any(placeId => allHostelNames.Contains(placeId));

返回布尔值标识全局是否存在匹配项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:06:01