如何使用LINQ从多个表中获取结果

时间:2011-10-16 18:55:50

标签: c# .net linq linq-to-sql linq-to-entities

我正在处理自动填充文本框。在这个用户可以输入他们的城市名称,我想从这个输入中搜索数据库表中的记录,并显示城市名称,州名和国家名称的相关组合列表。

如何使用LINQ获取此详细信息。

我的表结构如下,

国家 Countryid PK 国家或地区名称

国家 Stateid PK Statename的 Countryid FK

城市 Cityid PK 城市名称 Stateid FK

我想在自动填充文本框上获得结果。

例如,如果用户写san 他将获得包含san的城市名称列表

像美国加利福尼亚州旧金山一样。

如何编写LINQ查询以获得此结果。

3 个答案:

答案 0 :(得分:1)

使用linq-to-sql:

var q = from c in context.cities
select c.CityName + ", " + c.State.StateName + ", " + c.State.Country.CountryName
where CityName.StartsWith(typed);

这将为IEnumerable提供与输入字符匹配的建议。

答案 1 :(得分:1)

var query = from c in dataContext.City
            where c.Contains(keyword)
            select c.CityName + ", " + c.State.StateName+ ", "+ c.State.Country.CountryName;

答案 2 :(得分:1)

另一种变体:

var matches = cities.Where(c => c.CityName.Contains(substr))
                    .Select(a => String.Format("{0} {1} {2}",
                                        a.CityName, 
                                        a.State.StateName, 
                                        a.State.Country.CountryName 
                           ));