-1

以下に示すコードをソートする最も簡単で迅速な方法を知りたいです。出力の意味が変わるため、newRecord.AppCode からの並べ替えは適切ではありません。したがって、文字列出力からすべての行をソートする必要があります。最善の方法は何ですか?また、すべての行を区別したいと思います。LINQ を使用すると非常に高速になると思いますが、それほど得意ではありません。助けていただければ幸いです。完成間近!注: データは tsv から取得されています。.net 3.5、Visual Studio 2008 を使用) 進行状況がわかり次第、回答をマークします。:)

while ((line = sr.ReadLine()) != null)
            {
                String[] splitted = line.Split('\t');
                appcodes.Add(line);
                Records newRecord = new Records();

                newRecord.Server = splitted[0];
                newRecord.Instance = splitted[1];
                newRecord.AppCode = splitted[2];
                newRecord.Database = splitted[3];
                listrecords.Add(newRecord);
                for (int i = 0; i < appcodes.Count(); i++)
                {
                    if (newRecord.AppCode==appcodes[i].ToUpper())
                    {
                        String outp = newRecord.AppCode + "  " + newRecord.Server + "  " + newRecord.Instance + "  " + newRecord.Database;


                        Console.WriteLine(outp);
                    }
                }


            }
4

2 に答える 2

0

Keepers と newkeeper という名前のリストがあります。outp.sort() や outp.sort() のようなことをしようとしていましたが、文字列では機能しません。これが私が問題を解決した方法です。

 Keepers.Add(outp);

Keepers.Sort();

 newKeepers = Keepers.Distinct().ToList();

foreach (object o in newKeepers)
            {
                Console.WriteLine(o);
            }
Console.ReadLine();
于 2014-01-16T13:47:47.653 に答える
0

ご覧のとおり、newrecords にはさまざまなフィールドが含まれているため、問題を解決するために LINQ ステートメントを作成しました。

 var sorted_list = (from r in newrecords
                                   orderby r.AppCode, r.Server, r.Instance, r.Database
                                   select r).Distinct().ToList();


                var distinctSortedList = sorted_list.Distinct().ToList();
于 2014-01-16T13:50:24.557 に答える