C# 按国家/地区代码搜索国家/地区
我正在研究一种搜索方法,它将用Ajax调用,并在Mvc4中更新Webgrid。 搜索将遍历项目对象列表,其中包含一些字段 其中一个领域是乡村。现在,我的代码只检查输入字符串是否包含搜索字符串:C# 按国家/地区代码搜索国家/地区,c#,asp.net-mvc-4,country-codes,C#,Asp.net Mvc 4,Country Codes,我正在研究一种搜索方法,它将用Ajax调用,并在Mvc4中更新Webgrid。 搜索将遍历项目对象列表,其中包含一些字段 其中一个领域是乡村。现在,我的代码只检查输入字符串是否包含搜索字符串: private bool StringStartWith(string input, string searchstring) { bool startwith = false; var inputlist = new List<string>(input.ToLower()
private bool StringStartWith(string input, string searchstring)
{
bool startwith = false;
var inputlist = new List<string>(input.ToLower().Split(' ').Distinct());
var searchList = new List<string>(searchstring.ToLower().Split(' '));
var count = (from inp in inputlist from sear in searchList where inp.StartsWith(sear) select inp).Count();
if (count == searchList.Count)
startwith = true;
return startwith;
}
private bool StringStartWith(字符串输入,字符串搜索字符串)
{
bool startwith=false;
var inputlist=新列表(input.ToLower().Split(“”).Distinct());
var searchList=新列表(searchstring.ToLower().Split(“”));
var count=(从inputlist中的inp到sear中的sear,其中inp.StartsWith(sear)选择inp.count();
if(count==searchList.count)
startwith=true;
返回startwith;
}
但我也希望能够按国家代码进行搜索。因此,如果我写“DK”,它应该告诉我们它等于丹麦
我希望能得到一些帮助。
谢谢
//更新
iTURTEV的回答帮助我使我的方法发挥应有的作用。我只需要更新我的方法,如下所示:
private bool InputStartWithSearch(string input, string searchstring)
{
if(searchstring[searchstring.Length-1].Equals(' '))
searchstring = searchstring.Substring(0,searchstring.Length-2);
bool startwith = false;
var inputlist = new List<string>(input.ToLower().Split(' ').Distinct());
var searchList = new List<string>(searchstring.ToLower().Split(' '));
if (searchstring.Length == 2)
{
var countryCode = new RegionInfo(searchstring.ToUpper()).EnglishName;
if (inputlist.Any(country => country.ToLower().Equals(countryCode.ToLower())))
{
return true;
}
}
var count = (from inp in inputlist from sear in searchList where inp.StartsWith(sear) select inp).Count();
if (count == searchList.Count)
startwith = true;
return startwith;
}
private bool InputStartWithSearch(字符串输入,字符串搜索字符串)
{
if(searchstring[searchstring.Length-1]。等于(“”))
searchstring=searchstring.Substring(0,searchstring.Length-2);
bool startwith=false;
var inputlist=新列表(input.ToLower().Split(“”).Distinct());
var searchList=新列表(searchstring.ToLower().Split(“”));
if(searchstring.Length==2)
{
var countryCode=newregioninfo(searchstring.ToUpper()).EnglishName;
if(inputlist.Any(country=>country.ToLower().Equals(countryCode.ToLower()))
{
返回true;
}
}
var count=(从inputlist中的inp到sear中的sear,其中inp.StartsWith(sear)选择inp.count();
if(count==searchList.count)
startwith=true;
返回startwith;
}
非常感谢。假设:
公共类国家{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串等位码{get;set;}
}
然后:
返回x.Countries.Where(q=>
q、 Name!=null&&q.Name.ToLowerInvariant().Contains(text)|
q、 IsoCode!=null&&q.IsoCode.ToLowerInvariant().Contains(text));
这将返回名称或代码上有
文本的每个国家/地区。除非您使用的是[必需]
数据批注,否则检查空值非常重要。如果您不希望此批注不区分大小写,可以删除.ToLowerInvariant()
,您可以使用RegionInfo:
// returns Bulgaria
new RegionInfo("BG").EnglishName;
也许你有国家物品的清单?还是数据库表?您需要某种方法将代码映射到国家/地区,但您指定的信息不足,无法告诉我们您希望这些信息来自何处。@GolezTrol是对的,使用数据库表可以避免您在世界各地的循环,并尝试进行更多解释。感谢您的帮助-这正是我所要寻找的。!