Linq to Sql выбрать из нескольких таблиц - PullRequest
0 голосов
/ 24 мая 2010

У меня есть вопрос о выборе из нескольких таблиц в C # с помощью Linq.

Структура таблицы выглядит следующим образом:

ТАБЛИЦА A
TableAID Column1 Столбец2

ТАБЛИЦА B
TableBID TableAID Столбец3 Столбец4

Итак, в коде у меня есть:

List<string> myList = new List{"Test1","Test2"};
var myView = MYDC.TableA.AsQueryAble();

Если я хочу выбрать записи из таблицы A, используя where в столбце 1, я бы просто использовал:

myView = myView.Where(k=>myList.Contains(k.Column1));

Но если я хочу сохранить myView как запрашиваемый для TableA и если я хочу использовать где в TableB на Column3, который связан с TableA с внешним ключом, как бы я это сделал?

Я попробовал следующее безуспешно:

myView = myView.Where(k=>myList.Contains(k.TableB.Select(kk=>kk.Column3)));

Есть предложения?

Заранее спасибо

1 Ответ

0 голосов
/ 24 мая 2010

Есть несколько способов это сделать. Вот два из них:

var q = (
    from b in MYDB.TableB
    where myList.Contains(b.Column3)
    select b.TableA).Distinct();

var q =
    from a in myView
    let bs = a.TableB.Where(b => myList.Contains(b.Column3))
    where bs.Any()
    select a;

Надеюсь, это поможет.

...