Stellen Sie sich vor, es gibt zwei Tabellen.LINQ zu SQL SubSelect wie Abfrage
Order
+----------------+
| ID |
| Name |
+----------------+
OrderStatus
+----------------+
| ID |
| OrderId |
| StatusId |
+----------------+
Eine Bestellung kann mehr als einen OrderStatus haben, der OrderStatusHistory heißen könnte. Ich werde einen StronglyTypeObject Auftrag habe, die als
namespace my.project
{
public class Order
{
Int64 OrderId { get; set; }
String Name { get; set; }
Int64 StatusId { get; set; }
}
}
Diese StatusID im Auftrag Objekt sollten folgen descripted der aktuelle (zuletzt) StatusID von der Orderstatus Tabelle sein.
Ich habe versucht, eine IQueryable Liste von Objekten mit LINQ zu erstellen. Hier ist meine, nicht funktioniert;), Linq-Code
var result = from r in dbContext.ORDER
select new Order
{
OrderId = r.ID,
Name = r.Name,
StatusId = dbContext.OrderStatus
.Where(p => p.OrderId == r.ID).Last().StatusId
}
Ich habe auch mit Max versucht, Arbeit (p => p.XXX), aber es hat nicht geklappt. Hat jemand einen Hinweis auf dieses Problem?
Jede Hilfe wäre sehr willkommen ...
Gordon
Dies veranschaulicht, warum ich Linq und ähnliche ORM-Lösungen kritisiert habe. Hier ist ein Problem, das eine allgemein bekannte und relativ einfache Lösung in einer gut etablierten Sprache hat. Um einige theoretische Vorteile zu erhalten, verzichten Sie auf echte Produktivität. Haben die Gewinne, die Sie von Linq erhalten haben, mehr Zeit als nötig, um eine redundante (und idiosynkratische) Art der Abfrage von Daten zu lernen? Siehe http://stackoverflow.com/questions/458802/doesnt-linq-to-sql-miss-the-point-arent-orm-mappers-subsonic-etc-sub-opti für die Diskussion. –