J'interroge la base de données à l'aide de Linq to Sql. Voici mes données:Linq to Sql Requête renvoyant le même enregistrement deux fois
Name LastName Age
------------------------------
1 Abc Def 15
2 Abc Def 17
3 xyz wss 17
Mon code LINQ to Sql est:
Context _context = new Context("Conn_String");
var table = _context.GetTable<Person>();
List<Person> persons = table.Where<Person>(p => p.Name == "Abc" && p.LastName == "Def").ToList<Person>();
Selon ma compréhension, cette requête devrait retourner 2 enregistrements. c'est-à-dire enregistrement 1 et enregistrement 2. Mais il retourne l'enregistrement 1 deux fois. Pouvez-vous m'éclairer si c'est un bug dans Linq to Sql ou quelque chose que je fais mal?
EDIT:
Ceci est mon Code DAL:
public List<T> GetList<T>(Expression<Func<T, bool>> predicate) where T : class
{
try
{
Context _context = new Context("Conn_String");
var table = _context.GetTable<T>();
return table.Where<T>(predicate).ToList<T>();
}
catch (Exception ex)
{
throw ex;
}
}
J'appelle cette méthode:
List<Person> person = DAL.GetList<Person>(p => p.Name == "Abc" && p.LastName == "Def");
foreach(var Person in persons)
{
// Print(person.Age);
}
Il y a des chances, il y a quelque chose de mal avec vos diagnostics. Veuillez montrer comment vous déterminez que le même enregistrement est renvoyé deux fois. –
Oui. J'utilise LINQ (mais pas SQL) de manière intensive depuis des années dans des projets d'entrepôt de données, entre autres choses et je n'ai jamais vu cela. Je commencerais par déboguer le niveau SQL - voir l'instruction générée sur la base de données, puis voir ce que le serveur sql y retourne en l'exécutant dans l'application de gestion. C'est 99,9% un mauvais diagnostic. – TomTom
Les enregistrements renvoyés indiquent Age = 15 pour les deux enregistrements. –