C# 按国家/地区代码搜索国家/地区

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()

我正在研究一种搜索方法,它将用Ajax调用,并在Mvc4中更新Webgrid。 搜索将遍历项目对象列表,其中包含一些字段

其中一个领域是乡村。现在,我的代码只检查输入字符串是否包含搜索字符串:

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是对的,使用数据库表可以避免您在世界各地的循环,并尝试进行更多解释。感谢您的帮助-这正是我所要寻找的。!