2

ここで最初に主な質問を宣言しますので、必要に応じて残りをスキップできます。

結果リストをアルファベット順に並べ替えるにはどうすればよいですか?

public static List<string> GenerateMonthNames(string prefixText)
{
    List<string> items = new List<string>();
    items.Add("a");
    items.Add("appl");
    items.Add("ap");
    items.Add("apple");
    items.Add("change");
    items.Add("world");
    items.Add("engaging");

    string[] strArray = items.ToArray();

    string tempFundstr = string.Empty;
    List<string> returnedList= new List<string>();

    int strNumber;
    int strIndex = 0;
    for (strNumber = 0; strNumber < strArray.Length; strNumber++)
    {
        strIndex = strArray[strNumber].IndexOf(prefixText);
        if (strIndex >= 0)
        {
            tempFoundStr = strArray[strNumber];
            retLst.Add(retstr);
        }    
    }

    items.Clear();
    return returnedList;
}

autoCompleteオートコンプリートデータのソースとしてデータベースを使用せずに、Ajaxを試してみるのは必死でした...それを機能させるためだけに

まったく機能していなかったので、主な問題は解決しましたが (;. そして今、問題を「修正」した後、オートコンプリートは機能します

これは、リストまたは配列を反復処理するためになんとかプルした厄介なソリューションです。ここでの問題は、Linq、列挙、または任意の実装を使用して、結果を返すことができる方法を理解できないことです。アルファベット順にソートされたリスト。

そして、あなたの助けを借りて、コードを(本によって)まっすぐにしたいと思っています。

4

4 に答える 4

3

これはうまくいくはずです

items.Where(item => item.IndexOf(prefixText) >= 0).OrderBy(item => item)
于 2012-09-19T07:40:27.347 に答える
2

これを試して:

public static List<string> GenerateMonthNames(string prefixText)    
{
    var items = new List<string>();
    items.Add("Oliver");
    items.Add("Olsen");
    items.Add("learns");
    items.Add("how");
    items.Add("change");
    items.Add("world");
    items.Add("engaging");  

    var returnList = items.Where(item=>item.Contains(prefixTest)).ToList();
    returnList.Sort();

    return returnList;
}
于 2012-09-19T07:42:09.850 に答える
1

プレフィックスが is であるすべてのアイテムをフィルタリングする場合はprefixTextStartWithより正確になります。

items.Where(item => item.StartsWith(prefixText))
     .OrderBy(item => item)
于 2012-09-19T07:45:05.640 に答える
1

追加したいソートされたリストを単に返すだけの場合、これは機能するはずです

return retLst.OrderBy(item=>item);

より完全なリファクタリングを行うには、PHeiberg のソリューションを使用します。

また、このように初期化することもできます

List<string> items = new List<string>(){"a", "appl", ...etc}; 
于 2012-09-19T07:38:50.217 に答える