2 Stimmen

Kann ich das mit dynamischem Linq machen oder gibt es einen besseren Weg - Linq, C#, VS2008

Dies ist meine statische Abfrage

    var results = from v in users
              join d in orders on v.UserId equals d.UserId
              join p in Products on d.ProductId equals p.ProductId
              where v.UserName.Contains(UserName)
              where v.FirstName.Equals(FirstName)
              where v.ZipCity.Equals(ZipCity)
              where v.OrderDate >= OrderDate && v.OrderDate < OrderDate
              where p.ProductName.Equals(ProductName)
              select v.Email, v.ShippingCity, v.TrackingNo;

Ich habe mir dynamisches Linq angesehen und versuche, mein Gefühl dafür zu erweitern. Die obige Abfrage befindet sich in einer Methode namens

GetOrder(string UserName, string FirstName, string ZipCity, DateTime OrderDate, ProductName)

Kann ich dies mit Dynamic Linq tun, d.h. zu Products-Tabelle nur verbinden, wenn ProductName im Eingabeparameter nicht null ist?

Ich habe dies befolgt http://blog.bvsoftware.com/post/2008/02/27/How-to-create-a-Dynamic-LINQ-Query-Programmatically.aspx

2voto

tvanfosson Punkte 506878

Ich denke, ich würde Erweiterungsmethoden auf IEnumerable anstelle von Dynamic LINQ verwenden.

var result = from v in users
             join d in orders on v.UserId equals d.UserId
             where v.UserName.Contains(UserName)
             where v.FirstName.Equals(FirstName)
             where v.ZipCity.Equals(ZipCity)
             where v.OrderDate >= OrderDate && v.OrderDate < OrderDate
             select v.Email, v.ShippingCity, v.TrackingNo, d.ProductId;

if (!string.IsNullOrEmpty(ProductName))
{
   result = result.Join( Products.Where( p=> p.ProductName == ProductName ),
                         d => d.ProductId,
                         p => p.ProductId,
                         (d,p) => new
                                  {
                                      d.Email,
                                      d.ShippingCity,
                                      d.TrackingNo
                                  });
}

1voto

CodeLikeBeaker Punkte 19490

Schauen Sie sich die Antwort an, die ich auf diese Frage gegeben habe:

Best Practices für den Aufbau einer Such-App?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X