J'apprends juste Linq et ai rencontré un problème. Pour une validation, je reçois le dernier odomètre de notre base de données et je dois le comparer à la lecture suivante. La lecture de l'odomètre est un int sur les données entrantes et double sur la base de données (changé en int sur le fichier dbml).Confused sur Obtenir un int sur un var de Linq2Sql
Ci-dessous mon code:
private bool IsValidOdometer(string equipment, int odometerReading)
{
bool returnVariable = true;
CarteGraphDataDataContext db = new CarteGraphDataDataContext();
var odometer = (from p in db.EquipmentMainGenerals join q in db.EquipmentFuelLogs
on p.wdEquipmentMainGeneralOID equals q.wdEquipmentMainGeneralOID
where p.VehicleId == equipment
orderby q.Odometer descending
select q.Odometer).Take(1);
int previousOdometer = odometer;
if (odometer.Count() != 0)
{
if (odometerReading < previousOdometer)
{
returnVariable = false;
}
}
return returnVariable;
}
La ligne de problème est int previousOdometer = odometer;
. L'erreur que je reçois est:
Impossible de convertir implicitement le type 'System.Linq.IQueryable' à 'int'
Comment puis-je résoudre ce problème?
Merci. La seule chose à ajouter est que je devais le lancer en int. –
@Mike Wills: Ah, quel est le type dans la base de données et quel est le type de 'EquipmentFuelLogs.Odometer'? – jason
Je pense qu'il veut probablement utiliser First() au lieu de Single() puisque Single garantit qu'il n'y avait qu'un seul élément dans IEnumerable. Dans ce cas, il veut le plus nouveau – Mike