我遇到了一些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