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

  • 本文关键字:分隔 整数 linq 何匹配 c# linq
  • 更新时间 :
  • 英文 :


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

eg:
------------------------
| Program | Module      |
------------------------
| I       | 1,2,3       |
------------------------
| II      | 2, 3        |
------------------------
| III     | 1,3         |
------------------------

现在,如果我想选择模块为 2 的程序,请提供支持。

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

获取编译错误:

无法将字符串转换为整数

任何人都可以帮我吗?

谢谢

您只能将 sid 转换为字符串一次,然后像字符串一样搜索它

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

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

认为程序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

相关内容

  • 没有找到相关文章

最新更新