J'ai la méthode LINQ ci-dessous qui est appelée à partir d'un User Control
et déversée directement à un DataGridView
standard. Mes utilisateurs veulent le tri par défaut, d'abord, par DisenrollmentDate
puis Member Name
. En ce moment, avec le code ci-dessous, il trie par DisenrollmentDate
SEULEMENT.Tri multiple sur la méthode LINQ (imbriquée)
BLLCmo.cs
public static DataTable GetAllMembers(Guid workerID)
{
var AllEnrollees = from enrollment in context.tblCMOEnrollments
where enrollment.CMOSocialWorkerID == workerID || enrollment.CMONurseID == workerID
join supportWorker in context.tblSupportWorkers on enrollment.EconomicSupportWorkerID equals supportWorker.SupportWorkerID into workerGroup
from worker in workerGroup.DefaultIfEmpty()
orderby enrollment.DisenrollmentDate ascending
select new
{
enrollment.ClientID,
MemberName = BLLConnect.MemberName(enrollment.ClientID),
NurseName = BLLAspnetdb.NurseName(enrollment.CMONurseID),
SocialWorkerName =BLLAspnetdb.SocialWorkerName(enrollment.CMOSocialWorkerID),
enrollment.DisenrollmentDate,
enrollment.EnrollmentDate,
ESFirstName = worker.FirstName,
ESLastName = worker.LastName,
ESPhone = worker.Phone
};
var dataTable = AllEnrollees.CopyLinqToDataTable();
return dataTable;
}
BLLConnect.cs
public static String MemberName(Int32 personID)
{
var memberName = from person in context.tblPersons
where person.PersonID == personID
orderby person.LastName ascending
select person.FirstName + " " + person.LastName;
return memberName.SingleOrDefault();
}
Cela semble fonctionner. Merci!!! Malheureusement, il lance une exception sur la partie 'CopyLinqToDataTable' pour moi ... Je devrais juste utiliser' DataTables': \ –
Peu importe ce que je fais, quand je vais assigner les résultats à la DataSource de DataGridView, il lance cette exception- -> 'System 'System.String MemberName (Int32)' n'a pas de traduction prise en charge vers SQL. ' –
Oui, mais c'est un problème différent. Fondamentalement, il vous indique qu'il ne peut pas traduire l'arbre d'expression qui contient un appel de méthode dans T-SQL. Essayez d'intégrer cette expression dans la requête. –