2013-06-21 30 views
1
Dateadd(minute, TS.duration, TS.datesched) 

WHERE ...如何将以下函数/表达式从SQL转换为LINQ to Entities?

TS.Duration = int. 
TS.datesched = datetime. 

RTRIM(ISNULL(TC.CityLocation, '') + ' ' + ISNULL(TC.StateLocation, '') 

WHERE ...

TC.CityLocation = varchar(50) 
TC.StateLocation = varchar(10) 

CASE 
WHEN country = market 
OR country = 'USA' THEN market 
ELSE country + ' | ' + market 
END AS BroadcastMarket 

WHERE ...

Country = varchar(100) 
Market = varchar(100) 

CASE 
WHEN country = 'USA' THEN 0 
ELSE 1 
END AS CountrySort 

WHERE ...

Country = varchar(100) 

回答

2

我要去尝试在这一个采取刺伤。基本上你所寻找的是一个投影。是您的数据组。

var result = (from i in TcCollection 
       select new 
       { 
        Date = EntityFunctions.AddMinutes(i.datesched, i.duration), 
        Location = (i.CityLocation ?? "") + " " + (i.StateLocation ?? ""), 
        BroadcastMarket = 
         (i.market == i.country || i.country == "USA") ? 
         i.market : 
         i.country + " | " + i.market, 
        CountrySort = (i.country == "USA") ? 0 : 1 
       }); 
+0

感谢桑迪提供了我最初错过的日期部分。 – Jay

+0

这个伎俩。谢谢Jay! –

0

选择中的一个案例将在LINQ的投影中完成。你可以有一个多行匿名方法,这样你就可以拥有if/else语句,但是在这里我只是使用三元运算符来展示。

CASE 
WHEN country = 'USA' THEN 0 
ELSE 1 
END AS CountrySort 

变为:

.Select(c=> new { countrySort = (c.country == "USA" ? 0 : 1)}); 
1

您将不得不使用实体函数进行日期操作,例如LIND中的AddDays,AddMinutes。请参阅thisthis

相关问题