如何匹配linq中有逗号分隔的多个整数值的列?

时间:2016-07-13 09:01:38

标签: c# linq

我有列表,其中我的列有多个整数值(以逗号分隔)。

 int sid = 2; 
 IEnumerable<int> ids = Program.All.FindAll( item => 
     sid.contains(
         item.Module.Split(',').Select(s => (int)s)
     )
 )

现在,请补充,如果我想选择模块为2的程序。

JSON

出现编译错误:

  

无法将字符串转换为int

任何人都可以帮助我。

由于

2 个答案:

答案 0 :(得分:1)

您只能将sid转换为字符串一次并将其搜索为字符串

var sidAsStr = sid.ToString();
var result = Program.All.FindAll(item => item.Module.Split(',')
    .Any(s => s.Trim() == sidAsStr));

也许它是更高效的解决方案,因为它避免了许多解析操作

答案 1 :(得分:0)

认为计划ID是罗马数字,因此您应该提供自定义转化,以便在int中获取它们...我的解决方案获得IEnumerable string

 string sid = "2"; 
 IEnumerable<string> ProgramIds = 
   Program
  .Where( prg => 
     (("#") + prg.Module + "#").Contains("#"+sid+"#") 
    ||
     (("#") + prg.Module + "#").Contains("#"+sid+",") 
    ||
     (("#") + prg.Module + "#").Contains(","+sid+",") 
     )
  ).Select(prg => prg.Program)

对于罗马数字转换尝试这些链接它们都是很好的解决方案......

https://stackoverflow.com/a/26667855/3762855

https://stackoverflow.com/a/27976977/3762855