首页 > 解决方案 > 删除列包含特定文本的行

问题描述

我想删除其列包含的所有数据行,?例如大约 100 行中的列状态我得到的值为Unknown?, Error?, InProgress,Done

所以,我想删除所有包含的行?

下面是我正在使用的代码

//I am splitting the string on the basis of delimeter  ,

 var data = from val in UserData
                       select val.Split(',');
//Below code is not working

var filterdata = from rows in data
                        where rows.Contains("?")
                        select rows;

标签: c#arrays.netlinq

解决方案


您忘记反转包含:

string[] someStringArray = new string[]
{
    "\"ABC\" ,\"Error?\",\"OK\"",
    "\"DEF\",\"Inprogress\",\"FINE\"",
    "1,2,3",
    "?,2,3",
    "1,?,3",
    "4,5,6"
};

//I am splitting the string on the basis of delimeter  ,

var data = from val in someStringArray
            select val.Split(',');
//Below code is not working

var filterdata = from rows in data
                    where !rows.Contains("?") // "!" to select the rows WITHOUT "?"
                    select rows;

foreach (var item in filterdata)
{
    foreach (var i in item)
    {
        Console.Write(i + ",");
    }
    Console.WriteLine();
}

return;

结果:

"DEF","Inprogress","FINE",
4,5,6,

我认为这段代码运行良好。

除此之外,我做了一个疯狂的猜测:你不是在搜索问号“?”。这 ”?” 是一个字符,如果该字符无法以您预期的编码显示,则该字符通常会显示。

看看你的字符有哪些数字:

var chars = someStringArray.SelectMany(s => s.Select(c => c));

foreach (var item in chars.GroupBy(g => g.ToString() + " (" + ((int)g) + ")"))
{
    Console.WriteLine(item.Key + ": " + item.Count());
}

真正的问号有 63。如果不是,你有编码问题..


推荐阅读