2009-10-07 10 views
0

J'ai un List<Order>recherche une liste <>

public int OrderID { get; set; } 
public string CustID { get; set; } 
public string Details { get; set; } 

Je veux écrire une méthode qui accepte une pièce d'identité, recherche alors cette liste pour faire correspondre les enregistrements qui ont même CustID et retourne ORDERID et détails dans un List<>

Répondre

1
public List<Order> Get(string id) 
    { 
     List<Order> orders = new List<Order>(); // pass this in as a param or globally refer to it 

     var query = from o in orders 
        where o.CustID == id 
        select o; 
     return query.ToList();    
    } 

Ou si vous voulez revenir spécifiquement que ces deux domaines peut-être quelque chose comme:

public class Order : IOrderDetails 
    { 
     public int OrderID { get; set; } 
     public string CustID { get; set; } 
     public string Details { get; set; } 
    } 

    public interface IOrderDetails 
    { 
     int OrderID { get; set; } 
     string Details { get; set; } 
    } 

    public List<IOrderDetails> Get(string id) 
    { 
     List<Order> orders = new List<Order>(); // pass this in as a param or globally refer to it 

     var query = from o in orders 
        where o.CustID == id 
        select o as IOrderDetails; 
     return query.ToList(); 
    } 
+0

Il est plus verbeux que les autres réponses, mais vous avez spécifiquement demandé de retourner OrderID et Détails dans une liste <> – CRice

2

Cela obtenir une séquence d'objets de commande qui correspondent aux critères:

var ordersIWant = myList.Where(order => order.CustID == "some customer ID"); 
0

en supposant ces propriétés que vous avez énumérés appartiennent à une classe.

string searchId="15"; 

    var list = (from item in myList 
       where item.OrderId == searchId 
       select new {OrderId= item.OrderId,Details = item.Details }).ToList(); 

Juste écrit que sans compiler ... bonne chance.

Puisque vous vouliez seulement la commande et les détails j'ai renvoyé un objet anonyme. Pourrait également juste retourner item.

+0

Il devrait faire l'affaire, et il peut encore être raccourci à '... sélectionnez Nouveau {item. OrderId, item.Details} '- les noms des champs seront alors automatiquement générés pour être les mêmes que ceux que vous avez spécifiés explicitement dans votre exemple. –

+0

Comment renvoies-tu les types anonymes d'une méthode? – CRice

+0

http://stackoverflow.com/questions/534690/linq-to-sql-return-anonymous-type – CRice

Questions connexes