Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何正确划分列表<;字符串>;?_C#_.net_String_List - Fatal编程技术网

C# 如何正确划分列表<;字符串>;?

C# 如何正确划分列表<;字符串>;?,c#,.net,string,list,C#,.net,String,List,我有列表{”,“1,5,4”,“h”,“5,8”,“1”}。我需要分成3个列表。这是我的代码: var parseString = condition.Trim().Split(separator).ToList(); var numberSections = new List<string>(); var numberRow = new List<string>(); var numberCell = new List<string>(); foreach

我有
列表{”,“1,5,4”,“h”,“5,8”,“1”}
。我需要分成3个
列表
。这是我的代码:

var parseString = condition.Trim().Split(separator).ToList();
var numberSections = new List<string>();
var numberRow = new List<string>();
var numberCell = new List<string>();
foreach (var str in parseString) {
    if (int.TryParse(str.Substring(0, 1), out i) && numberSections.Count == 0) {
        numberSections.Add(str);
        parseString.Remove(str);
    }
    if (int.TryParse(str.Substring(0, 1), out i) && numberRow.Count == 0) {
        numberRow.Add(str);
        parseString.Remove(str);
    }
    if (int.TryParse(str.Substring(0, 1), out i) && numberCell.Count == 0) {
        numberCell.Add(str);
        parseString.Remove(str);
    }
}
var parseString=condition.Trim().Split(separator.ToList();
var numberSections=新列表();
var numberRow=新列表();
var numberCell=新列表();
foreach(parseString中的var str){
if(int.TryParse(str.Substring(0,1),out i)&&numberSections.Count==0){
添加(str);
parseString.Remove(str);
}
if(int.TryParse(str.Substring(0,1),out i)&&numberRow.Count==0){
编号如箭头所示,添加(str);
parseString.Remove(str);
}
if(int.TryParse(str.Substring(0,1),out i)&&numberCell.Count==0){
编号cell.Add(str);
parseString.Remove(str);
}
}

但它不起作用。我该怎么做呢?

这里有一个LINQ版本

var result = list.Select(x => x.Split(",".ToCharArray(), 
                               StringSplitOptions.RemoveEmptyEntries)) // now we have List<List<string>>
                .Select(x => x.Select(y =>
                {
                    int value;
                    var isInt = int.TryParse(y, out value);
                    return isInt ? value : (int?)null;
                })) // convert each element of inner list to null or its int values
                    // we have a List<List<int?>>
                .Where(x => x.Any() && x.All(y => y.HasValue)) // only select lists which contains only integers
                .ToList();
var result=list.Select(x=>x.Split(“,”.ToCharArray(),
StringSplitOptions.RemoveEmptyEntries))//现在我们有了列表
.Select(x=>x.Select(y=>
{
int值;
var isInt=int.TryParse(y,输出值);
返回isInt?值:(int?)null;
}))//将内部列表的每个元素转换为null或其int值
//我们有一份清单
.Where(x=>x.Any()&&x.All(y=>y.HasValue))//仅选择仅包含整数的列表
.ToList();

您不能在迭代时修改
parseString
。此外,您只能在每个结果列表为空时将项目添加到这些列表中。为什么要使用3个列表来存储结果,而不是3个字符串变量?不清楚您想做什么。你能举几个输入和输出的例子吗?