2010-06-11 9 views
2

Je l'ordre, se OrderDetails et des objets OrderStatus comme indiqué ci-dessous:objets en C# Remplissage

public class Order 
{ 
    public override int OrderId { get; set; } 
    public string FName { get; set; } 
    public string MName { get; set; } 
    public string LName { get; set; } 
    public string Street { get; set; } 
    public string City { get; set; } 
    public List<OrderDetails> OrderDetails { get; set; }; 
} 

public class OrderDetails 
{ 
    public override int OrderdetailsId { get; set; } 
    public int OrderId { get; set; } 
    public int ProductID { get; set; } 
    public int Qty { get; set; } 
    public List<OrderStatus> OrderStat { get; set; }; 
} 

public class OrderStatus 
{ 
public override int OrderdetailsStatusId { get; set; } 
public int OrderdetailsId { get; set; } 
public int StatusID { get; set; } 

} 

Je ne peux pas utiliser LinQ. Je veux remplir l'objet de commande comme nous le faisons dans LinQ.

Comment remplir toutes les propriétés de l'objet Ordre: par exemple.

Order o =new Order(); 
o.FName="John"; 
o.LName="abc"; 
o.Street="TStreet"; 
o.City="Atlanta"; 

puis o.Orderdetails.Add (OrderDetails)

Comment puis-je faire ici en C# lorsqu'ils ne sont pas LINQ.

+1

Vous l'avez déjà fait. o.FName = "John"; etc ... Si vous voulez interroger à partir d'une base de données (Linq2Sql), alors il y a beaucoup d'options. Ado.Net, NHibernate, Entity Framework .... –

+0

Je ne suis pas sûr de ce que vous voulez dire en remplissant LINQ - pouvez-vous poster comment vous le faites là pour que nous puissions vous donner quelque chose d'équivalent? Par LINQ, voulez-vous dire en réalité C# 3, c'est-à-dire la syntaxe 'var o = new Order() {FName =" John "}; Dans tous les cas, le code que vous avez doit fonctionner, sauf que vous devrez initialiser o.Orderdetails avec une liste vide <>. – Rup

+0

En outre, vous pouvez ajouter des constructeurs à vos objets avec des paramètres pour chaque propriété. – Jay

Répondre

4

Parlez-vous d'être en mesure de le faire:

Order o =new Order 
{ 
    FName="John", 
    LName="abc", 
    Street="TStreet", 
    City="Atlanta" 
}; 

Parce que vous Sould toujours être en mesure de le faire, même sans LINQ;

Vous pouvez même aller jusqu'à:

Order o =new Order 
{ 
    FName="John", 
    LName="abc", 
    Street="TStreet", 
    City="Atlanta" 
}; 

o.OrderDetails = new List<OrderDetail>(); 
o.Add(new OrderDetail { OrderdetailsId = 1, Qty = 0 /* etc */}); 

Mais cela peut être un peu déroutant.

+0

Non, ce n'est pas trop déroutant, même si je n'ai jamais su où placer les accolades et les parenthèses. –

+0

Peut-être que le mot correct est "Mais cela peut devenir un peu ** non supportable **" – Robaticus

+0

La ligne OrderDetails = ne sera pas compilée dans cet exemple. Au lieu d'appeler Ajouter, instanciez la liste avec un initialiseur de collection imbriqué. – MattDavey

0

Fondamentalement ce que vous avez l'air bien. Vous pouvez également utiliser des délégués et des événements si vous avez besoin de plus de contrôle de la classe.

Si vous demandez comment vous souhaitez remplir à partir d'un magasin de données, cela sonne comme si vous souhaitiez créer un graphique d'objet. Vous pouvez déclarer la classe comme sérialisable, regardez ça.

1

Si vous faites référence à cette syntaxe:

Order o = new Order() 
{ 
    FName = "John", 
    LName = "abc", 
    Street = "TStreet", 
    City = "Atlanta" 
}; 

Il n'a rien à voir avec LINQ. Vous pouvez toujours utiliser la syntaxe de l'initialiseur d'objet lorsque vous ciblez .NET 2.0, à condition d'utiliser un compilateur C# 3.0. Le compilateur générera exactement la même IL qu'il le ferait pour votre code original.