Linq to entities 如何仅选择表1中具有表2中相同值的行(C-实体框架到实体)

Linq to entities 如何仅选择表1中具有表2中相同值的行(C-实体框架到实体),linq-to-entities,Linq To Entities,我刚到林肯,有个问题 我的表1中有一些列名为Aktie和Depot等,而表2的列名为Aktie和Depot等 我的结果应该是表1中的所有行首先选择,然后我只需要表1中对应表2中Aktie和Depot列的相同组合的行 这就是我到目前为止所尝试的: var query = from u in _context.Table1.ToList().GroupBy(m => new { m.Aktie, m.Depotname }).Select(x => x.First())

我刚到林肯,有个问题

我的表1中有一些列名为Aktie和Depot等,而表2的列名为Aktie和Depot等

我的结果应该是表1中的所有行首先选择,然后我只需要表1中对应表2中Aktie和Depot列的相同组合的行

这就是我到目前为止所尝试的:

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中选择所有行,其中表2中至少有一行的列Aktie和Depot具有相同的值,下面是如何在LINQ中执行此操作-这些方法中的一些可能无法与LINQ to SQL/Entities一起使用。每个答案都在qu中提供ery和lambda/method/fluent语法

// 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 }));

换句话说,表2中所有具有相同Aktie和Depot列值组合的条目(也在表1中)都应该是结果……希望我想要的是明确的吗?在表2中,可能有多行对应Aktie和Depot列,而这一行只能选择一次……您的结果不能同时是一个结果我只选表1中的行,只选表1中的行-你能把你的问题重新表述清楚吗?当然可以-很抱歉我的英语不好。表1中有77行,表2中只有47行。我需要在表1上选择,表2中的所有行取决于列Aktie和Depot。结果应该显示47行。我将尝试附加一张包含sa的图片Mpelhi Netmage,首先-非常感谢您的大力帮助!您的金额曾经是77-但应该是47。正如我在图片中显示的,可能有许多行具有相同的Aktie和Depot值。但是结果应该只包含一行。它应该是表2 47项的副本,但具有表1的所有值…可能您需要你知道如何解决这个问题吗?目前我这样做是为了达到相同的结果-但我想通过Linq:foreach var item in Table1{foreach var item2 in Table2{ifitem.Aktie==item2.Aktie&&item.Depotname==item2.Depotname来学习它{DatenFuerSelect.Additem;}}@fahr LINQ to SQL可以正确地使用它,我认为您必须调试SQL转换以查看发生了什么,这取决于您使用的EF。如果您只需要每个匹配的Table1行的一个副本,如何选择要返回的行?