与LINQ的内部联接

时间:2012-12-06 09:01:27

标签: linq

我是LINQ的新手,有人可以帮我解决如何将以下查询转换为LINQ:

select c.cityname, c.cityid from country cn
inner join [State] st on cn.stateid = st.stateid
inner join [city] c on c.cityid = st.cityid where 
cn.countrid = 'cn001' order by c.cityname

1 个答案:

答案 0 :(得分:0)

试试这个:

List<State> States = new List<State>();
List<City> Cities = new List<City>();
List<Country> Countries = new List<Country>();

int countryId = 10;
var query = Countries
            .Join(States, c => c.StateId, s => s.StateId, (c, s) => new {Country = c, State = s})
            .Join(Cities, s => s.State.CityId, c => c.CityId, (t, c) => new {c.CityId, c.CityName, t.Country.CountryId})
            .Where(r => r.CountryId == countryId)
            .Select(r => new {r.CityName, r.CityId})
            .OrderBy(r => r.CityName);


class Country
{
    public int StateId { get; set; }

    public int CountryId { get; set; }
}
class State
{
    public int StateId { get; set; }

    public int CityId { get; set; }
}

class City
{
    public int StateId { get; set; }

    public int CityId { get; set; }

    public string CityName { get; set; }
}