我有列表,其中我有包含多个整数值的列(用逗号分隔)。
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