Как выбрать только строки из таблицы 1, которые имеют одинаковые значения в таблице 2 (C # - Entity Framework для объектов - PullRequest
0 голосов
/ 04 июня 2019

Я новичок в Линке и у меня есть вопрос.

У меня есть Таблица 1 с некоторыми значениями в столбцах с именами Aktie и Depot (и многое другое). У меня есть таблица 2, в которой также есть столбцы с именами Акти и Депо (и многое другое).

Мой результат должен состоять в том, что сначала выбираются все строки из таблицы 1, а затем мне нужны только строки из таблицы 1, которые соответствуют той же комбинации столбца Aktie и Depot в таблице 2

Вот что я пробовал до сих пор:

var query =
        from u in _context.Table1.ToList().GroupBy(m => 
new { m.Aktie, m.Depotname }).Select(x => x.First()).OrderBy(x => x.Aktie)
        join l in _context.Table2 on u.Aktie equals l.Aktie
        where u.Depotname == l.DepotName
        select u;

Может ли кто-нибудь мне помочь? Результаты не верны .....

1 Ответ

1 голос
/ 06 июня 2019

Предполагая, что вы хотите спросить, как выбрать все строки из Таблицы 1, где существует хотя бы одна строка в Таблице 2, которая имеет одинаковое значение для столбцов Aktie и Depot, вот как это сделать в LINQ - некоторые из этих методов могутне работает с LINQ to SQL / Entities.Каждый ответ предоставляется в запросе и синтаксисе лямбда / метод / беглый.

// using join
var ans = from u in _context.Table1
          join l in _context.Table2 on new { u.Aktie, u.Depotname } equals new { l.Aktie, Depotname = l.DepotName }
          select u;

var ans2 = _context.Table1.Join(_context.Table2, u => new { u.Aktie, u.Depotname }, l => new { l.Aktie, Depotname = l.DepotName }, (u, l) => u);

// using Any
var ans3 = from u in _context.Table1
           where (from l in _context.Table2 where u.Aktie == l.Aktie && u.Depotname == l.DepotName select l).Any()
           select u;

var ans4 = _context.Table1.Where(u => _context.Table2.Any(l => u.Aktie == l.Aktie && u.Depotname == l.DepotName));

// using Contains
var ans5 = from u in _context.Table1
           where (from l in _context.Table2 select new { l.Aktie, Depotname = l.DepotName }).Contains(new { u.Aktie, u.Depotname })
           select u;

var ans6 = _context.Table1.Where(u => _context.Table2.Select(l => new { l.Aktie, Depotname = l.DepotName }).Contains(new { u.Aktie, u.Depotname }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...