首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Linq匿名类查询有关问题`高手来

2012-03-20 
Linq匿名类查询问题`高手来啊C# codevar query from ep in db.Enterpriseselect new{Validity ep.Seco

Linq匿名类查询问题`高手来啊

C# code
var query = from ep in db.Enterprise                        select new                        {                            Validity = ep.SecondHouse.FirstOrDefault().Validity==null?new DateTime(1900,01,01):DateTime.Parse(ep.SecondHouse.FirstOrDefault().Validity)                           };

sql查询里字符串是可以跟GETDATE() 直接比对而.net却不能 字符串< >dateTime.now 怎么解决

设置断点为什么生成的语句是
SQL code
SELECT     (CASE         WHEN NOT (EXISTS(            SELECT TOP (1) NULL AS [EMPTY]            FROM [dbo].[SecondHouse] AS [t2]            WHERE [t2].[EntId] = [t0].[Id]            )) THEN 1        WHEN NOT NOT (EXISTS(            SELECT TOP (1) NULL AS [EMPTY]            FROM [dbo].[SecondHouse] AS [t2]            WHERE [t2].[EntId] = [t0].[Id]            )) THEN 0        ELSE NULL     END) AS [value], (    SELECT [t4].[Validity]    FROM (        SELECT TOP (1) [t3].[Validity]        FROM [dbo].[SecondHouse] AS [t3]        WHERE [t3].[EntId] = [t0].[Id]        ) AS [t4]    ) AS [s]FROM [dbo].[Enterprise] AS [t0]



三目表达式为什么没成立?生成的语句变成了2列?忘高手帮我解决

[解决办法]
var query = from ep in db.Enterprise
let sh=ep.SecondHouse.FirstOrDefault()
select new
{
Validity = sh==null?DateTime.Parse("1900-1-1"):DateTime.Parse(sh.Validity)
};

你的结果之所以会生成两列 和你后来的自定义类有关吧。。
和三目运算符木有关系
[解决办法]
linq to sql? 
延迟查询,最终转换成sql语句,好像有过类似帖子。

1、时间转换 不要用 DateTime.Parse,linq to sql不支持它,支持ToDate,ToInt,Tobool等,即用
Convert.ToDateTime
2、用Convert.ToDateTime转换时,不用去判断 这个值是否为NULL,直接使用,会生成对应的sql时间转 换,为NULL的会自动过滤, 可以再 进行时间比较,你那个三元可以不用。
 这样生成的sql语句将简单的多。

热点排行