2017-04-02 24 views
0

我是C#的初学者,现在正在编写“搜索”功能的代码。我已经把表格连接到N,就像下面的例子。而且,我想找出与表A匹配的数据,例如,表B,“KeyB002”。 (答案是KeyA001 & KeyA003)。

我一直在使用IQueryable,这个语法可以吗?或者,这不起作用?我想知道的SingleOrDefault或FirstOrDefault将拿起仅附有TABLEA的第一关键,并通过(搜索)从所有连接的键不走,并找出在表A中的数据....IQueryable为1到N表来选择所有数据(c#)

谢谢非常。

(当前语法)仅供参考 - searchtableB_ID从屏幕...

var IqueryableData = from m in db.tableA.Include(p => p.tableB) select m; 
IqueryableData = IqueryableData.Where(s => s.tableB.SingleOrDefault().tableB_Key == searchtableB_ID); 

表一表& B:
KeyA001 - KeyB001
KeyA001 - KeyB002
KeyA001 - KeyB005
KeyA001 - KeyB007

KeyA002 - KeyB003
KeyA002 - KeyB005
KeyA002 - KeyB008

KeyA003 - KeyB001
KeyA003 - KeyB002
KeyA003 - KeyB006
KeyA003 - KeyB009

+0

WHERE查询中的FirstOrDefault/SingleOrDefault表达式不会阻止返回多个记录。 – Benthon

回答

0

你只可以:

var queryableData = db.tableB.Include(p => p.tableA).Where(q=> q.tableB_key == searchtableB_ID).First(m => m.tableA); 

通知颠倒包括(p => p.tableB)而不是(p => p.tableA)

相关问题