我有一个方法从数据库中选择两个字段,其中第一个字段中的文本与某个值匹配
public static List<List<string>> SelectForSearch(string letter)
{
var data = (from p in model.City
where p.Name.StartsWith(letter)
select new List<string> { p.Name, p.CountryName }).ToList();
return data;
}
但它给我一个这样的清单:
[0] [0]澳大利亚
[0] [1]巴利纳[1] [0]浆果
[1] [1]澳大利亚[2] [0]澳大利亚
[2] [1]本迪戈
......
Country and City possition没有这样的静态索引:
[0] [0]巴利纳
[0] [1]澳大利亚[1] [0]浆果
[1] [1]澳大利亚[2] [0]迪戈
[2] [1]澳大利亚
...
答案 0 :(得分:2)
您的问题是,在您的select语句中,您创建的是字符串列表,而不是使用Name和CountryName创建类型。 List初始化器允许您在构建列表时传入值,方法是将它们放在{ }
中,并且您正在使用此功能,因为您看到它创建了一个字符串列表,其中名称是第一个元素,国名是第二个要素。你想要做的更像是:
var data = (from p in model.City
where p.Name.StartsWith(letter)
select new { City = p.Name, CountryName = p.CountryName }).ToList();
return data;
这是使用匿名类型,因为你想要为返回值声明一个类型。所以你应该真正创建一个存储类,例如:
public class CityCountryPair
{
public String City { get; set; }
public String CountryName { get; set; }
}
然后您的方法变为
public static List<CityCountryPair> SelectForSearch(string letter)
{
var data = (from p in model.City
where p.Name.StartsWith(letter)
select new CityCountryPair() { City = p.Name,
CountryName = p.CountryName
}).ToList();
return data;
}