Considérez les instructions LINQ suivantes:
var model = getModel();
// apptId is passed in, not the order, so get the related order id
var order = (model.getMyData
.Where(x => x.ApptId == apptId)
.Select(y => y.OrderId));
var orderId = 0;
var orderId = order.LastOrDefault();
// see if more than one appt is associated to the order
var apptOrders = (model.getMyData
.Where(x => x.OrderId == orderId)
.Select(y => new { y.OrderId, y.AppointmentsId }));
3 Réponses :
On dirait que ceci est tout ce dont vous avez besoin:
Non, j'ai besoin de tous ceux qui partagent la même commande. Je n'ai pas la commande accessible à ce stade, c'est pourquoi je le regarde d'abord.
@Neo - Oui, mais vous faites cela via le APPTID code>. Cela vous semble toujours équivalent à celui du code de votre question.
Votre réponse suppose que toutes les données avec un APTID CODE> ont également tous les mêmes OrderID code>, je doute fort que c'est le cas
Vous pouvez utiliser la méthode de groupeby pour regrouper toutes les commandes par OrderID. Après avoir postulé sur LastOrdefault et Tolist vous donnera le même résultat que vous obtenez du code ci-dessus.
Voici un code d'exemple: p>
var apptOrders = model.getMyData
.Where(x => x.ApptId == apptId)
.GroupBy(s => s.OrderId)
.LastOrDefault().ToList();
Initialement, je n'ai pas d'identifiant de commande.
Cela fait la même chose que vous faites dans votre code. Il filtration des ordres par l'APPTID donné, puis le regroupant par l'ID de commande et de prendre des commandes de la dernière commande.
Ah, j'ai raté le groupement par ordeid. Je vais tester cela dans un peu.
Framework d'entité ne peut pas traduire lastordrefault code>, mais il peut gérer contient code> avec des sous-requêtes, donc consultez le code code> comme requête et Filtrer les commandes à cet effet: // apptId is passed in, not the order, so get the related order id
var orderId = model.getMyData
.Where(x => x.ApptId == apptId)
.Select(y => y.OrderId);
// see if more than one appt is associated to the order
var apptOrders = model.getMyData
.Where(a => orderId.Contains(a.OrderId))
.Select(a => a.ApptId);
prochirection de VAR = 0; foreach (point variable dans l'ordre) {orderid = élément; } code> pourrait être remplacé parVarchechard = ordre.lastopefault (); code>.@mjwills belle prise.
@Gurustron Question mise à jour. GetMyData est une table du magasin de données.
Mais si vous avez deux commandes ou plus avec le même app stdid comment définissez-vous laquelle de ces commandes est la dernière? Sans une ordonnance, vous quittez cette décision de la manière dont votre dB récupère les commandes.
Quel est votre ormes? Cadre d'entité?
@Markuzy oui tristement nous sommes toujours sur ef4
@Steve Appids sont uniques. Une commande peut avoir plus d'un app apttid associé à celui-ci. Et dans mon cas, je n'ai qu'un app apttid, je dois donc rechercher l'ordre d'abord et voir si plusieurs appceptides sont associés.
Qu'est-ce que
ApppointsPointsId code> et est-il lié àAPPTID code>?