我遇到了一些LINQ to SQL的特性。LINQ to SQL的特性
有了一个相对简单的查询,我要选择一些领域,但是格式化为字符串的日期字段,这是我第一次像这样实现的:
var list = dataContext.MyLists.Single(x => x.ID == myId);
var items = from i in list.MyItems
select
new
{
i.ID,
i.Sector,
i.Description,
CompleteDate = i.CompleteDate.HasValue ? i.CompleteDate.Value.ToShortDateString() : "",
DueDate = i.DueDate.HasValue ? i.DueDate.Value.ToShortDateString() : ""
};
后来我尝试下面的查询,这是完全一样的,只是我从我的DataContext查询直,而不是我的第一次查询的元素:
var items = from i in dataContext.MyLists
select
new
{
i.ID,
i.Sector,
i.Description,
CompleteDate = i.CompleteDate.HasValue ? i.CompleteDate.Value.ToShortDateString() : "",
DueDate = i.DueDate.HasValue ? i.DueDate.Value.ToShortDateString() : ""
};
第一个运行正常,但第二个查询产生了:
无法将表达式'...'转换为SQL,无法将其视为本地表达式。
如果我删除格式日期的行,它工作正常。如果我删除.HasValue检查它也可以正常工作,直到有空值。
任何想法?
安东尼
好像你有两个完全不同的查询。一种是从MyList对象中的MyItems中进行选择。第二个是从MyList对象中选择(不是MyItems)。两者的数据类型是否相同?在不知道表结构是什么的情况下调试它是相当困难的。 – Bryant 2008-10-02 16:06:48