您好,提前感谢您提供的任何帮助。
我有一个 PostalCode 对象,它有一个与其关联的城市列表,城市有一个州对象作为属性,州对象有一个国家/地区对象作为属性。
我需要对将返回城市的邮政编码列表运行 linq 查询,但我需要它位于国家/地区代码等于“US”的位置。
在 SQL 中,这将是关系上的一堆内部联接:
SELECT *
FROM PostalCodes pc
INNER JOIN CityPostalCode cpc
ON cpc.PostalCodeId = pc.Id
INNER JOIN Cities c
ON cpc.CityId = c.Id
INNER JOIN States s
ON s.Id = c.StateId
INNER JOIN Country c
ON s.CountryId = c.Id
WHERE pc.Code = '12345' AND c.Code = 'US'
如何在 LINQ 中对我的对象执行此操作?
public class PostalCode
{
public int Id { get; set; }
public string Code { get; set; }
public virtual List<City> Cities { get; set; }
}
public class City
{
public int Id { get; set; }
public string Name { get; set; }
public int StateId { get; set; }
public virtual State State { get; set; }
public virtual List<PostalCode> PostalCodes { get; set; }
}
public class State
{
public int Id {get; set;}
public string Code {get; set;}
public string Name {get; set;}
public int CountryId {get; set;}
public Country Country {get; set;}
}
public class Country
{
public int Id { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public virtual List<State> States { get; set; }
}
最佳答案
如果您想返回包含该邮政编码的城市列表,那么您可以执行以下操作:
var cities = context.Cities
.Where(city => city.State.Country.Code == "US" &&
city.PostalCodes.Any(pc => pc.Code == "12345"))
.ToList();
关于c# - LINQ 沿着对象树查询需要匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36359773/