选择* From LINQ中的tab1, tb2, tb3等

本文关键字:tb2 tb3 tab1 中的 From LINQ 选择 | 更新日期: 2023-09-27 18:10:04

我正在尝试将上述语句转换为LINQ。我有多个表(在第一列有一个标识符),我需要"乘法"它们,这样我得到一个表作为一个结果,所有可能的组合都显示(例如表1 = 2行,表2 = 2行,表3 = 2行,结果表2*2*2 = 8行)。

如果我有一个sqlite数据库,我过去是这样做的:

string sql = "SELECT * FROM tab1,tab2,tab3;
SQLDataAdapter adapter = new SQLiteDataAdapter(sql, con);
adapter.Fill(ds.Tables[1]);

现在数据库不再是一个sqlite数据库,而是一个数据集。此数据集包含tab1,tab2,tab3等。现在我要做和之前一样的事——把表格相乘。如何用数据集完成这一点(如果可能的话,通过使用LINQ)?

选择* From LINQ中的tab1, tb2, tb3等

在LINQ查询表达式中,您只需要多个from子句,例如

var query = from row1 in tab1
            from row2 in tab2
            from row3 in tab3
            select new { row1, row2, row3 };

如果您不想使用查询表达式,您可以使用SelectMany代替,但在这种情况下,查询表达式将更简单。

对于数据集,您可能需要这样的内容:

var query = from row1 in ds.Tables["tab1"].AsEnumerable()
            from row2 in ds.Tables["tab2"].AsEnumerable()
            from row3 in ds.Tables["tab3"].AsEnumerable()
            select new { row1, row2, row3 };

确保System.Datausing指令,以便您可以为AsEnumerable拉入DataTableExtensions