J'essaie de sélectionner des enregistrements dans la base de données dans 60 jours 30 jours 20 jours différents en date du jour.LINQ to Entities ne reconnaît pas la méthode 'System.TimeSpan Subtract (System.DateTime)' méthode
Veuillez voir cette requête ci-dessous.
var uploads = (
from files in _fileuploadRepository.Table
join product in _productRepository.Table on files.Event equals product.Id
where
(
product.EventDate != null &&
(product.EventDate.Subtract(DateTime.Now).Days <= 60 && product.EventDate.Subtract(DateTime.Now).Days >= 60) ||
(product.EventDate.Subtract(DateTime.Now).Days <= 30 && product.EventDate.Subtract(DateTime.Now).Days >= 30) ||
(product.EventDate.Subtract(DateTime.Now).Days <= 20 && product.EventDate.Subtract(DateTime.Now).Days >= 20))
&&
files.IsSkiped == false
select files;
).ToList();
Mais une erreur est survenue lors de cette requête.
Je suis désemparés. S'il vous plaît aidez.
-vous en dehors des calculs de l'instruction lambda. Quand il est dans le lambda comme vous l'utilisez, vous essayez que EntityFramework fasse le calcul quand ce n'est pas fait. – Middas
Ainsi, LINQ to SQL ne "traduira" pas une expression comme "product.EventDate.Subtract (DateTime.Now)". En C#, une notation alternative est 'product.EventDate - DateTime.Now' où l'on utilise [une surcharge de l'opérateur moins (' -')] (http://msdn.microsoft.com/en-us/library/1905yhe2. aspx). Est-ce que quelqu'un sait si _that_ fonctionnera avec LINQ to SQL?Après tout, la soustraction des dates est également possible dans les dialectes SQL. –
@JeppeStigNielsen Pour EF, vous pouvez utiliser EntityFunctions.DiffDays – scartag