-2

これが私のコードのサンプルです。

ここでは、別のページから文字列変数を受け取ります。

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        string newparameter = this.NavigationContext.QueryString["search"];
        weareusingxml();

        displayResults(newparameter);

    }

private void displayResults(string search)
{
bool flag = false;
try
{
    using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
    {
        using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("People.xml", FileMode.Open))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(List<Person>));
            List<Person> data = (List<Person>)serializer.Deserialize(stream);
            List<Result> results = new List<Result>();


            for (int i = 0; i < data.Count; i++)
            {
                string temp1 = data[i].name.ToUpper();
                string temp2 = "*" + search.ToUpper() + "*";
                if (temp1 == temp2)
                {
                    results.Add(new Result() {name = data[i].name, gender = data[i].gender, pronouciation = data[i].pronouciation, definition = data[i].definition, audio = data[i].audio });
                  flag = true; 
                }
            }

            this.listBox.ItemsSource = results;

}
catch
{
    textBlock1.Text = "error loading page";

}
if(!flag)
{
  textBlock1.Text = "no matching results";
}

}

コードの実行時にリストに何もロードされず、「一致する結果がありません」というメッセージが表示されます。

4

3 に答える 3

1

含む検索を実行しようとしているようです(検索文字列の前後に*を追加したことに基づいています。「*」を削除して文字列を実行できます。一致を含みます。

これを試して。

string temp1 = data[i].name.ToUpper();
string temp2 = search.ToUpper()
if (temp1.Contains(temp2))
{
于 2012-11-30T08:25:00.947 に答える
1

ある文字列に別の文字列が含まれているかどうか (つまり、部分文字列の一致) をチェックしようとしているように見えますが、それらが等しいかどうかはチェックしていないようです。

C# では、次のようにします。

haystack = "Applejuice box";
needle = "juice";
if (haystack.Contains(needle))
{
     // Match
}

または、あなたの場合(そして*、文字列 temp2 に追加したものをスキップします)

if (temp1.Contains(temp2))
{
   // add them to the list 
}
于 2012-11-30T08:27:05.937 に答える
0

念のため確認しましたdata.Count > 0か?

于 2012-11-30T08:20:58.140 に答える