我正在尝试在C#中创建一个搜索方法,但我被卡住了。
这是我想用来搜索List对象中的数组值的方法:
public void Search()
{
Console.Write("\tKeyword: ");
string keyword = Console.ReadLine();
List<string> searchResults = new List<string>();
for (int a = 0; a < log.Count; a++)
{
foreach (string item in log[a])
{
if (item.Contains(keyword))
searchResults.Add(item);
}
}
Console.WriteLine("Search Results: ");
for (int b = 0; b < searchResults.Count; b++)
{
Console.WriteLine("\t{0}\t{1}\t\t{2}", searchResults[b][0], searchResults[b][1], searchResults[b][2]);
}
}
这是我要搜索的列表:
private List<string[]> log = new List<string[]>();
这就是我在列表中添加数组的方法:
string[] arrOfLog = new string[4] {
String.Format("{0:yyyy-MM-dd}", localDate),
title,
desc,
null
};
log.Add(arrOfLog);
如何搜索标题和说明值?
我得到例外:
对象引用未设置为对象的实例。
答案 0 :(得分:0)
您可以在创建模型类
后执行此操作public class model
{
string localDate { get; set; }
string title { get; set; }
string desc { get; set; }
}
然后使用它你可以单独搜索它们。
这是完整的代码
public void Search()
{
Console.Write("\tKeyword: ");
string keyword = Console.ReadLine();
List<string> moList = new List<string>();
foreach ( var item in log )
{
model mo = new model();
mo.localDate = log[0];
mo.title = log[1];
mo.desc = log[2];
}
List<string> searchResults = new List<string>();
for (int a = 0; a < moList.Count; a++)
{
foreach (model item in moList[a])
{
if (item.title.Contains(keyword) || item.desc.Contains(keyword)){
searchResults.Add(item);
}
}
}
Console.WriteLine("Search Results: ");
for (int b = 0; b < searchResults.Count; b++)
{
Console.WriteLine("\t{0}\t{1}\t\t{2}", searchResults[b][0], searchResults[b][1], searchResults[b][2]);
}
}
答案 1 :(得分:0)
你可以写item?.Contains(keyword) ?? false
而不是item.Contains(keyword)
如果项目为?
,则null
不会调用包含,但如果项目为null
,则会获得null
。
如果项目为??
,false
会告诉编译器使用null
。