2010-08-27 3 views
1

J'ai cette méthode qui a travaillé pendant un certain tempsEn utilisant LINQ appelant un sproc, comment puis-je transmettre un var à partir d'une méthode?

public string getSlotText(int slotID) 
{ 
    DataClasses1DataContext context = new DataClasses1DataContext(); 

    var slotString = context.spGetSlotTextBySlotID(slotID); 

    return slotString.ElementAt(0).slotText; 

} 

Mais ce que je veux vraiment est maintenant quelque chose comme

public var getSlotText(int slotID) 
{ 
    DataClasses1DataContext context = new DataClasses1DataContext(); 

    var slotString = context.spGetSlotTextBySlotID(slotID); 

    return slotString; 
} 

comme slotString a plus d'un élément à l'intérieur. J'ai vu d'autres exemples mais aucun avec LINQ appelant un sproc.

Toute aide serait incroyable, je vous en serais très reconnaissant.

Merci beaucoup

Tim

Répondre

0

Le mot-clé var n'est pas autorisé comme type de retour. Il ne peut être utilisé qu'à l'intérieur des méthodes et des membres de la classe avec l'initialisation.

Bien qu'il soit possible de faire une inférence de type pour le type de retour qui viole d'autres choses en C#. Par exemple les types anonymes. Puisque les méthodes ne peuvent pas retourner les types anonymes en C#, vous devez vérifier que vous ne pouvez pas retourner les types anonymes en interdisant simplement le mot-clé var comme type de retour. En outre, autoriser var comme type de retour rendrait la signature de méthode moins stable lors de la modification de l'implémentation.

Edit: Il est un peu difficile de ce que vous attendez de revenir, mais voici quelques solutions standards:

Si vous voulez retourner tous slotText du résultat:

return context.spGetSlotTextBySlotID(slotID).Select(s=> s.slotText).ToList()); 

(retournera un List<string>)

ou si vous voulez retourner tous SlotText (ou tout autre type qui est le retour de la sproc)

return context.spGetSlotTextBySlotID(slotID).Select(s=> s.slotText).ToList()); 

(retournera un List<SlotText>)

+0

Salut Albin merci pour votre réponse. Je veux fondamentalement faire quelque chose comme ça Je veux fondamentalement créer une méthode dans une classe qui appelle un lien sproc via, puis dans une page séparée appelez cette méthode afin qu'elle renvoie un objet que je peux ensuite retirer les valeurs et affichez-les sur ma page. someType myVar WebApplication1.getSlotText (1) textbox1.text = myVar.slotTitle.toString(); textbox2.Text = myVar.slotText.toString(); textbox3.Text = myVar.slotUrl.toString(); Je vais regarder à travers votre réponse, mais je pensais que je posterais cela en attendant. merci encore –

+0

@Tim: Pouvez-vous modifier votre question avec cette information? Vous devez également préciser si vous voulez un objet avec des propriétés différentes ou plusieurs objets avec une seule propriété ou plusieurs objets avec de nombreuses propriétés. Vous pouvez publier un exemple du contenu attendu de la valeur de retour. –

Questions connexes