0

我第一次尝试比较DateTime

var searchResult = new PagedData<SAMPLE_STOCK>
{
Data = _db.SAMPLE_STOCK.Where(m => m.LAST_UPDATED.Date == lastUpdate.Date)
};
return PartialView(searcReasult);

它给出了以下错误

The specified type member 'Date' is not supported in LINQ to 
Entities. Only initializers, entity members, and entity navigation 
properties are supported.

然后我写下面的代码

var searchResult = new PagedData<SAMPLE_STOCK>
{
Data = _db.SAMPLE_STOCK.Where(m => m.LAST_UPDATED.Day == lastUpdate.Day 
                                && m.LAST_UPDATED.Month == lastUpdate.Month
                                && m.LAST_UPDATED.Year==lastUpdate.Year)
};

它工作正常。我的问题是....这些有什么区别?

4

2 回答 2

0

讯息

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

非常不言自明。SQL 不知道如何获取 DateTime 类型的 Date 属性。它可以与日期时间一起使用。它可以与整数一起使用。在您的情况下,您必须使其与整数一起使用。

就性能而言..我没有看到任何不良影响。

PS:DateSQL中对datatype的支持与此无关。

于 2013-06-26T08:15:19.497 回答
0

抛出异常是因为您的谓词无法翻译成 SQL。如果您将其转换为 Enumerable,它可能会起作用,因为您强制使用 linq2object 过滤,但我认为您的第二个查询比这更有效:

var searchResult = new PagedData<SAMPLE_STOCK>
{
    Data = _db.SAMPLE_STOCK.AsEnumrable().Where(m => m.LAST_UPDATED.Date == lastUpdate.Date)
};
return PartialView(searcReasult);

这是你的选择,这个选项提供更少的代码,但更多的内存使用。

于 2013-06-26T08:21:15.843 回答