Лямбда-выражение, использующее Join для чего-то большего, чем простой ключ - PullRequest
0 голосов
/ 05 января 2012

Я бы хотел присоединиться, но мне нужно сравнить больше, чем просто ключ.Например, я хотел бы сделать что-то вроде следующего:

from a in tableA
join b in tableB on a.x between b.minX and b.maxX

Не очень сложно.Но функции лямбда-метода Join, кажется, хотят сравнить простой ключ.

Есть мысли?

Ответы [ 3 ]

2 голосов
/ 05 января 2012
from a in tableA
from b in tableB
where a >= b.minX && a <= b.maxX
select a;
0 голосов
/ 06 января 2012

Вы специально спрашивали о точечном синтаксисе?

        var tableA = new[] {1, 2, 3, 4};
        var tableB = new[]
                         {
                             new {minX = 1, maxX = 2},
                             new {minX = 3, maxX = 6},
                             new {minX = 5, maxX = 7},
                             new {minX = 6, maxX = 8},
                         };
        var res = tableA.SelectMany(a => tableB, (a, b) => new {a, b}).Where(t => t.a >= t.b.minX && t.a <= t.b.maxX)
                .Select(t => t.a);
0 голосов
/ 05 января 2012

Как то так?

var fdts = from fdt in context.FeuilleDeTemps.Include("FeuilleDeTempsJournees")
           where
               (employes.Contains(fdt.ID_Employe)) &&
               (fdt.DateDepart <= date) &&
               (fdt.DateFin >= date)
           orderby fdt.ID_Employe
           select fdt;

или в вашем случае

var v = from a in context.tableA.Include("tableB")
        where
            a.x < b.minX &&
            a.x > b.maxX
        select v;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...