以下是我的代码示例。
我在这里收到另一页的字符串变量。
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";
}
}
运行代码时没有任何内容加载到列表中,我只是收到消息“没有匹配的结果”。
答案 0 :(得分:1)
看起来你正在尝试进行包含搜索(根据您在搜索字符串周围添加*的猜测。您可以删除'*'并执行字符串。包含匹配。
试试这个。
string temp1 = data[i].name.ToUpper();
string temp2 = search.ToUpper()
if (temp1.Contains(temp2))
{
答案 1 :(得分:1)
看起来你正试图检查一个字符串是否包含另一个字符串(即子字符串匹配),而不是它们是否相等。
在C#中,你这样做:
haystack = "Applejuice box";
needle = "juice";
if (haystack.Contains(needle))
{
// Match
}
或者,在您的情况下(并跳过您添加到字符串temp2的*
)
if (temp1.Contains(temp2))
{
// add them to the list
}
答案 2 :(得分:0)
您是否检查过以确认data.Count > 0
?