LINQ中的三级选择语句?

时间:2016-07-17 22:53:47

标签: c# asp.net-mvc entity-framework linq

我正在尝试使用LINQ语句获取特定县ID的数据, SQL中的查询如下所示:

# type ('a, 'b) abfun = 'a -> 'b;;
type ('a, 'b) abfun = 'a -> 'b

既然我还是LINQ的新手你能不能帮助我实现这个目标,并且最好将LINQ或存储过程用于数据集?

另一种SQL方式:

move_uploaded_file($_FILES["profile_pic"]["tmp_name"], $directory.$newname.'.'.$extension)

感谢和最好的问候

3 个答案:

答案 0 :(得分:2)

由于这是Entity Framework,因此您可以更轻松地使您的数据查询任务(特别是如果您是LINQ的新手)并且如果您使用所谓的navigation properties描述数据关系,则基本上会忘记连接。

一旦你拥有它们,像问题一样的查询就像那样简单:

var query = db.Ads_Computers.Where(c => c.City.State.Country.CountryID == 10);

(当然,如果您只想获取特定字段,可以添加Select。)

答案 1 :(得分:1)

你可以像下面这样在LINQ中转换内部查询。

注意:我没有测试过,因此可能存在错误。

Select  Ads_ComputersID, AdTitle, AdDesc, CityID, CategoryID, Price
From [dbo].[Ads_Computers] 
where CityID in ( Select CityID from [dbo].[Cities] where [StateID] in (select StateID from [dbo].[States] where CountryID=10))

LINQ

var innermostQuery = from s in db.States where s.CountryID = 10 select s.CityId;
var innerQuery = from c in db.Cities where innemostQuery.Contains(c.StateId) select c.CityID;

var result = from x in db.Ads_Computers  where innerQuery.ToList().Contains(x.CityIS) select x;

答案 2 :(得分:1)

var query = from d in entities.Ads_Computers
            from c in entities.Cities.Where(cid => cid.CityID == d.CityID).DefaultIfEmpty()
            from s in entities.States.Where(st => st.StateID == c.StateID).DefaultIfEmpty()
            where st.CountryID = 10
            select new 
            {
                d.Ads_ComputersID, 
                d.AdTitle, 
                d.AdDesc, 
                d.CityID, 
                d.CategoryID, 
                d.Price
            };

希望这有帮助!