C#Linq通过列表搜索到Linq
对象:C#Linq通过列表搜索到Linq,c#,linq,contain,C#,Linq,Contain,对象: ticketTypeRep = new TicketTypeRepository(); packageRep = new PackageRepository(); 数据来自用户搜索的此列表: var pases = ticketTypeRep.Fetch() .Where(x => x.VTP_NOMBRE_PASE.ToUpper().Trim().Contains(searchString.ToUpper().Trim())) .Select(x =>
ticketTypeRep = new TicketTypeRepository();
packageRep = new PackageRepository();
数据来自用户搜索的此列表:
var pases = ticketTypeRep.Fetch()
.Where(x => x.VTP_NOMBRE_PASE.ToUpper().Trim().Contains(searchString.ToUpper().Trim()))
.Select(x => new { id = x.VTP_COD_TIPOPASE}).ToList();
我正试图用这些数据作为一个列表来搜索另一个列表中的每个项目
var packageWithPase = packageRep.Fetch()
.Where(x => x.PKG_TICKETTYPE.Trim().Contains("21"))
.Select(x => new { id = x.PKG_SEQID, name = x.PKG_NAME, state = x.PKG_STATE, details = x.PKG_SEQID, edit = x.PKG_SEQID })
.OrderBy(x => x.name).ToList();
问题是“21”必须是第一个名为pases的列表的结果,而不是一个简单的字符串
我猜,通过列表搜索linq。您想要的是以另一种方式进行比较,如:
passes.Contains(x.PKG_TICKETTYPE.Trim())
请记住,这不是字符串。而是包含
所以你的问题是:
var packageWithPase = packageRep.Fetch()
.Where(x => passes.Contains(x.PKG_TICKETTYPE.Trim())
.Select(x => new
{
id = x.PKG_SEQID,
name = x.PKG_NAME,
state = x.PKG_STATE,
details = x.PKG_SEQID,
edit = x.PKG_SEQID
}).OrderBy(x => x.name)
.ToList();
var packageWithPase = packageRep.Fetch()
.Where(x => pases.Contains(x.PKG_TICKETTYPE.Trim())
.Select...
还不完全清楚您想要什么,但看起来您想要的是pases
包含PKG\u TICKETTYPE
值的记录,该值为:
var packageWithPase = packageRep.Fetch()
.Where(x => passes.Contains(x.PKG_TICKETTYPE.Trim())
.Select(x => new
{
id = x.PKG_SEQID,
name = x.PKG_NAME,
state = x.PKG_STATE,
details = x.PKG_SEQID,
edit = x.PKG_SEQID
}).OrderBy(x => x.name)
.ToList();
var packageWithPase = packageRep.Fetch()
.Where(x => pases.Contains(x.PKG_TICKETTYPE.Trim())
.Select...
我已经格式化了您的代码片段,但这样做会引入语法错误(**分散)。您可能应该检查您问题中的代码(仅供参考,缩进四个空格以创建标记中的代码块)谢谢@mikeTheLiar:)谢谢Habib,我将此输入:var packageWithPase=packageRep.Fetch()。其中(x=>passs.contains(x.TICKETTYPE.trim())@Roberto2790,是的。我使用了与您问题中相同的查询。