2010-10-14 17 views
1

J'ai une instruction select dynamique ainsi:dynamique LINQ Sélectionnez concaténation

"nouvelle (comme PurchaseOrderID ID_PK, PContractNo + GoodsSupplier.AssociatedTo.DisplayName comme search_results)"

Comme on peut le voir, je souhaite concaténer la Les champs 'PContractNo' et 'GoodsSupplier.AssociatedTo.DisplayName' dans un champ retourné nommé 'Search_Results'. Il est important que ces deux champs soient combinés.

Cependant, la bibliothèque Linq se plaint du '+', que l'analyseur d'expression renvoie sous la forme d'un 'Concat (etc ...), qui bien sûr ne peut pas être traduit en une expression de magasin. De toute évidence, je voudrais de l'aide concernant la façon dont je devrais formater la chaîne de sélection afin de faire ce que je veux. J'ai essayé beaucoup de choses!

Toute aide serait grandement appréciée!

Merci, Ian Mac

+0

Aussi stupide que cela puisse paraître essayer de mettre un + "" + entre vos deux champs. Peut-être des parenthèses autour de ce que votre concaténation? – Gage

+0

Malheureusement non! J'ai déjà essayé l'option de support également, en vain. Juste pour confirmer que je ne tente pas de faire quelque chose qui ne peut pas être fait avec LINQ 'standard', ce qui suit fonctionne bien: sélectionnez new {ID_PK = o.PurchaseOrderID, Search_Results = o.POrderNo + ":" + o.GoodsSupplier .AssociatedTo.DisplayName} –

Répondre

0

Créer une nouvelle classe comme

public class A 
{ 
    public String k; 
    public String v; 

} 

et l'utilisation LINQ pour rejoindre

res = from a in list 
select new A 
{ 
    k = a.Key, 
    v = String.Concat(a.Key,a.Value) 
};