-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.Contains 匹配。

尝试这个。

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 回答