2009-10-20 10 views
0

Je n'arrive pas à convertir une instruction C# Linq en VB.NET. J'ai besoin de l'instruction suivante convertie. Je suis accroché sur la partie i.Sum (v => v).Linq to Sql - Convertir l'aide C# en VB.NET

from p in Products 
from u in Users 
let i = (from op in OrderProducts 
     where op.Order.User == u && op.Product == p 
     select op.ProductQty) 
let quant = i.Count() == 0 ? 0 : i.Sum(v=>v) 
select new {p.ProductName, u.UserName, Quantity = quant} 

Voici ce que j'ai pour VB, mais le cas (i.Count() = 0, 0, i.Sum()) _ déclaration dit opérateur global parameterless 'Somme' est pas pris en charge au cours de l'exécution par rapport aux prévisions (pas d'erreurs de compilation). J'ai aussi essayé i.Sum (Fonction (q) i.ProductQty) qui ne fonctionne pas non plus (dit sum ne peut pas être appelé avec ces arguments). Des idées sur la façon de convertir ce fichier en VB.NET et de le faire fonctionner? Merci!

+3

Notez que si vous voulez une traduction précise, '&&' dans C# est équivalent à 'AndAlso' pas' And'. De même '' || 'est équivalent à' OrElse' pas 'Or'. –

Répondre

6

Votre "flèche" syntaxe C#:

.Sum(v => v) 

peut être converti en ce qui suit dans VB.NET:

.Sum(Function(v) v) 

La "flèche" syntaxe est une expression lambda. Pour plus d'informations sur les expressions Lambda dans VB.NET, consultez this MSDN entry.

+0

FYI, c'est ce qu'on appelle une expression lambda. –

+0

Yup. Assumé le PO ne connaîtrait pas lambdas, mais bon de noter le nom correct là-dedans. – Larsenal