Re: linq и список
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.02.11 16:56
Оценка: 36 (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 '('

Мы воспроизводили синтаксис 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
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
linq и список
От: Аноним  
Дата: 28.02.11 05:41
Оценка: -1
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 '('
Re: linq и список
От: _nn_ www.nemerleweb.com
Дата: 28.02.11 07:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>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
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: linq и список
От: hardcase Пират http://nemerle.org
Дата: 28.02.11 08:52
Оценка:
Здравствуйте, Аноним, Вы писали:

А>def l=[(1,1,"aaa"),(2,2,"aaa")];

А>def ll=l.AsQueryable();
А>_=linq <# from p1,p2,p3 in ll select p1 #>;

К сожалению, сопоставление с образцом в предложении from не поддерживается, но как показывет практика, это и не нужно — linq предназначен не для этого.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: linq и список
От: Аноним  
Дата: 01.03.11 05:29
Оценка:
Здравствуйте, VladD2, Вы писали:

Спасибо большое, понял.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.