Обычно это не то, что для LINQ или любого провайдера с поддержкой LINQ over Expression (например, LINQ to SQL, LINQ to Entities, LINQ to NHibernate, LLBLGen Pro и т. Д. И т. Д.). Это просто языковой вопрос. Вы хотите знать, как преобразовать формат yyyyMMdd в DateTime
.
Хитрость заключается в том, чтобы оставить OUT преобразования запроса LINQ (через деревья выражений), потому что поставщик LINQ не сможет преобразовать его, или, если это возможно, вы получите реализацию, очень специфичную для поставщика.
Таким образом, хитрость заключается в том, чтобы извлечь ее из базы данных в виде строки (или, конечно, еще лучше: изменить модель базы данных) и преобразовать ее в DateTime
в .NET. Например:
// Doing .ToArray is essential, to ensure that the
// query is executed right away.
string[] inMemoryCollectionStrings = (
from item in db.Items
where some_condition
select item.Inv_Acctcur).ToArray();
// This next query does the translation from string to DateTime.
IEnumerable<DateTime> dates =
from value in inMemoryCollectionStrings
select DateTime.ParseExact(value, "yyyyMMdd",
CultureInfo.InvariantCulture);
Другими словами, вы можете использовать следующую строку для преобразования:
DateTime.ParseExact(value, "yyyyMMdd", CultureInfo.InvariantCulture);