2012-04-03 10 views
1

Ich möchte eine Eigenschaftsliste einer Klasse an eine Funktion übergeben. mit in der Funktion basierend auf Eigenschaftsliste werde ich eine Abfrage generieren. Genau wie die selbe Funktionalität in der Linq Select Methode. Hier werde ich das für Ingress Database implementieren.Linq-Ausdruck an eine Funktion übergeben

Als Beispiel I

vor Ende wanna, da dies eine ausgewählte laufen,

Meine Entity-Klasse ist wie dieser

public class Customer 
{ 
    [System.Data.Linq.Mapping.ColumnAttribute(Name="Id",IsPrimaryKey=true)] 
    public string Id { get; set; } 

    [System.Data.Linq.Mapping.ColumnAttribute(Name = "Name")] 
    public string Name { get; set; } 

    [System.Data.Linq.Mapping.ColumnAttribute(Name = "Address")] 
    public string Address { get; set; } 

    [System.Data.Linq.Mapping.ColumnAttribute(Name = "Email")] 
    public string Email { get; set; } 

    [System.Data.Linq.Mapping.ColumnAttribute(Name = "Mobile")] 
    public string Mobile { get; set; } 
} 

ich so eine Select-Funktion aufrufen wollen,

var result = dataAccessService.Select<Customer>(C=>C.Name,C.Address); 

dann, mit Ergebnis kann ich die Werte der Name und Adresse Eigenschaften erhalten.

Ich glaube, meine Select-Funktion soll wie folgt aussieht,

(* Ich denke, das Linq Expression durchgeführt unter Verwendung sollte. Aber im nicht sicher, was die Eingangsparametern und Typ zurück. *)

Class DataAccessService 
{ 
    // I'm not sure about this return type and input types, generic types. 
    public TResult Select<TSource,TResult>(Expression<Func<TSource,TResult>> selector) 
    { 
     // Here I wanna Iterate through the property list, which is passed from the caller. 
     // Here using the property list, 
     // I can get the ColumnAttribute name value and I can generate a select query. 
    } 
} 

Dies ist ein Versuch, eine Funktionalität wie in Linq zu erstellen. Aber ich bin kein Experte für Linq Expressions.

Es gibt einen Projektanruf DbLinq von MIT, aber es ist ein großes Projekt und trotzdem konnte ich nichts hilfreiches daraus machen.

Kann mir bitte jemand helfen, dies zu starten, oder kann mir jemand ein paar nützliche Quellen nennen, um darüber zu lesen.

+0

Nicht sicher, was Sie erreichen möchten ... Möchten Sie den Namen und die Adresse aller Kunden erhalten? –

+0

Kalin, In meiner Select-Methode möchte ich durch die angezeigte Liste der Eigenschaften iterieren. In meinem Beispiel sollte es nur Name und Adresse Eigenschaften geben. – Sency

+1

Sie beschreiben _how_ Sie möchten etwas tun. Können Sie bitte beschreiben, warum Sie das tun wollen, das heißt, was Sie erreichen wollen? –

Antwort

1

Sie versuchen, einen neuen anonymen Typ zu erstellen, der aus Name und Adresse besteht.

public void Linq11() 
{ 
    List<Product> products = GetProductList(); 

    var productInfos = 
     from p in products 
     select new { p.ProductName, p.Category, Price = p.UnitPrice }; 

    Console.WriteLine("Product Info:"); 
    foreach (var productInfo in productInfos) 
    { 
     Console.WriteLine("{0} is in the category {1} and costs {2} per unit.", productInfo.ProductName, productInfo.Category, productInfo.Price); 
    } 
} 

Details:: Das ist leicht erreichbar über lange Form Linq (. Ich diesen Begriff bis gemacht, mangels einer besseren Erklärung) Hier ist eine Probe, die von Microsoft, unten stehenden Link Linq Select Samples

Update: Also versuchst du so etwas zu tun?

Ich verstehe nicht, warum Sie Select als eine Funktion von DataAccessService implementieren möchten? Versuchen Sie, dies eher als Erweiterungsmethode zu erstellen? Wenn das nicht das ist, was du meinst, dann musst du deine Frage neu formulieren und wie ein Kommentator vorgeschlagen hat, sag uns, was du brauchst und nicht wie du willst, dass wir es entwerfen.

+0

Sorry duluca, Du hast es nicht verstanden, ich möchte diesen anonymen Typ in eine Funktion überführen, und in der Funktion möchte ich diese Eigenschaftsliste durchgehen, die übergeben wird. und ich möchte diese Eigenschaften mit Werten zurückgeben. – Sency