使用StartsWith C#过滤列表

时间:2019-02-28 22:38:59

标签: c# .net

.txt文件中有一个单词列表。我只想通过控制台显示以字母“ R”开头并保留字母顺序的单词。例: 'Rav' 'Ret' “ Ril”

        static void Main(string[] args)
        {
            StreamReader objReader = new StreamReader(
                @"C:\Users\thoma\Documents\Visual Studio 2019\Backup Files\data.txt");



            string orden = "";
            List<string> arrText = new List<string>();

            while (orden != null)
            {
                orden = objReader.ReadLine();
                if (orden != null) arrText.Add(orden);
            }
            objReader.Close();

           foreach (string sOutput in arrText)
                Console.WriteLine(sOutput);

            Console.WriteLine("Order alphabetically ascending press 'a': ");
            Console.WriteLine("Ordener descendant alphabetical press 'b': ");                       

            instruccion = Console.ReadLine();
            if (instruccion == "a"){
                var resultList = arrText.Where(o => o.StartsWith("r"));
                Console.WriteLine(resultList);    
//string ascending = string.Format("{0}{1}{0}", "'", string.Join("','", arrText.OrderBy(x => x)));


            }         
            Console.ReadLine();
        }
    }
}

此代码给我的结果是' System.Linq.Enumerable + WhereListIterator '

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

console.writeline只是打印对象ToString()方法,在这种情况下,该方法是对象的名称。

您需要枚举结果……也许像这样:

malloc

答案 1 :(得分:0)

您将可枚举的对象传递给Console.WriteLine:

Console.WriteLine(resultList); 

但是您不想打印对象元素(容器),而是每个元素,因此需要迭代结果并打印每个元素:

foreach(var element in resultList)
    Console.WriteLine(element);

答案 2 :(得分:0)

您必须迭代结果列表,就像您之前进行arrText值一样。

static void Main(string[] args)
{
    string fileName = @"C:\Users\thoma\Documents\Visual Studio 2019\Backup Files\data.txt";
    var arrText = File.ReadLines(fileName).ToList();         

    foreach (string sOutput in arrText)
        Console.WriteLine(sOutput);

    Console.WriteLine("Order alphabetically ascending press 'a': ");
    Console.WriteLine("Ordener descendant alphabetical press 'b': ");                       

    var instruccion = Console.ReadLine();
    IEnumerable<string> resultList;
    if (instruccion == "a")
        resultList = arrText.Where(o => o.ToLower().StartsWith("r")).OrderBy(o => o);
    else if (instruccion == "b")
         resultList = arrText.Where(o => o.ToLower().StartsWith("r")).OrderByDescending(o => o);
    else
        resultList = Enumerable.Empty<string>();

    foreach(var item in resultList)
        Console.WriteLine(item);    

    Console.ReadLine();
}