C# 我可以只使用一个外键提取多个列的值吗?
我正在从事一个包含SQL的C项目,主要使用实体和linq 假设我有两张桌子 表1 表2 我想在datagrid中显示名称、日期和价格。C# 我可以只使用一个外键提取多个列的值吗?,c#,sql,entities,C#,Sql,Entities,我正在从事一个包含SQL的C项目,主要使用实体和linq 假设我有两张桌子 表1 表2 我想在datagrid中显示名称、日期和价格。 如何仅通过引用作为表1主键的外键将两个或一个值(如果我们这样做,反之亦然)从表1中提取出来?如果您唯一的问题是sql语句,您可以使用类似以下内容或join: select t1.name, t1.date, t2.price from table1 t1, table2 t2 where t1.primary_key = t2.foreign_key; 如果您
如何仅通过引用作为表1主键的外键将两个或一个值(如果我们这样做,反之亦然)从表1中提取出来?如果您唯一的问题是sql语句,您可以使用类似以下内容或join:
select t1.name, t1.date, t2.price from table1 t1, table2 t2 where t1.primary_key = t2.foreign_key;
如果您有其他问题,请向我们提供更多详细信息…假设您的数据位于IEnumerable Table1列表和IEnumerable Table2列表中,您可以使用LINQ:
Table1List.Join(Table2List,
t1 => t1.PrimaryKey, // replace PrimaryKey by your actual field storing primary key
t2 => t2.fkTable1,
(t1, t2) => new { t1.Name, t1.Date, t2.Price }
)
这将或多或少地对应于SQL查询:
SELECT t1.Name, t1.Date, t2.Price
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.PrimaryKey = t2.fkTable1
是,您可以通过连接两个表来选择任何列。
示例:从表1中选择名称、日期和价格表1上的表2内部连接。key=table2.fktable1您的意思是您正在使用实体框架吗?我不知道您期望的结果是什么,请将其添加到您的问题中。你可以加入这些表,然后只传递一次密钥?这与c有什么关系?欢迎来到堆栈溢出。为了得到好的答案,你需要问一些不同的问题:1。你需要事先做一些研究。这很可能会回答你的问题,因为它似乎是非常基本的。您应该提供一些代码和示例数据来阐明您的观点。如果给定的FK1在表2中有多个条目,您想怎么做?你也试过什么?你哪里有问题?在一个SELECT中使用两个表是非常糟糕的做法-最好使用JOIN
Table1List.Join(Table2List,
t1 => t1.PrimaryKey, // replace PrimaryKey by your actual field storing primary key
t2 => t2.fkTable1,
(t1, t2) => new { t1.Name, t1.Date, t2.Price }
)
SELECT t1.Name, t1.Date, t2.Price
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.PrimaryKey = t2.fkTable1