Здравствуйте, Аноним, Вы писали:
А>А>def l=[(1,1,"aaa"),(2,2,"aaa")];
А>def ll=l.AsQueryable();
А>_=linq <# from p1,p2,p3 in ll select p1 #>;
А>
А>Error 5 expected keyword in but found ','
А>А>_=linq <# from (p1,p2,p3) in ll select p1 #>;
А>
А>Error 5 expected identifier but found '('
Мы воспроизводили синтаксис Linq по спецификациям МС. А у них не было кортежей, так что прошляпили этот момент
.
Я добавил поддержку индексации кортежей в
9652. Теперь будет можно писать так:
def xs = [(1,1,"aaa"), (2,2,"aaa")];
def xs = xs.AsQueryable();
def res = linq <# from p in xs select p[0] #>;
WriteLine(res.Expression);
WriteLine(res.ElementType);
WriteLine($"..$res");
Код выводит:
[(1, 1, aaa), (2, 2, aaa)].Select(p => p.Field0)
System.Int32
1, 2
def l=[(1,1,"aaa"),(2,2,"aaa")];
def ll=l.AsQueryable();
_=linq <# from p1,p2,p3 in ll select p1 #>;
Error 5 expected keyword in but found ','
_=linq <# from (p1,p2,p3) in ll select p1 #>;
Error 5 expected identifier but found '('
Здравствуйте, Аноним, Вы писали:
А>def l=[(1,1,"aaa"),(2,2,"aaa")];
А>def ll=l.AsQueryable();
А>_=linq <# from p1,p2,p3 in ll select p1 #>;
А>Error 5 expected keyword in but found ','
А>_=linq <# from (p1,p2,p3) in ll select p1 #>;
А>Error 5 expected identifier but found '('
Варианты решения:
using Nemerle.Linq;
using System.Linq;
def l = [(1,1,"aaa"),(2,2,"aaa")];
// 1.
_ = linq <# from p in l select p[0] #>;
// 2.
_ = l.Select(p => p[0]);
// 3.
_ = l.Map(p => p[0]);
P.S.
Thanx to emperon