我需要连接两个数据表并从连接表中检索一些列(将动态选择)。我使用LINQ查询来执行连接,但我无法动态选择列列。
代码是:
var q = (from pd in tableOne.AsEnumerable()
join od in tableTwo.AsEnumerable() on pd.Field<string>(leftTableColumn) equals od.Field<string>(rightTableColumn)
select new
{
Column1=pd.Field<dynamic>(reuiredColumn1),
Column2=od.Field<dynamic>(requireColumn2)
});
这里tableOne和tableTwo是数据表。这里的问题是我总是能够根据查询只获得两列(column1,column2)。但是我需要根据用户选择动态地形成选择查询。
任何人都可以分享任何关于如何实现这一结果的想法吗?
答案 0 :(得分:0)
你想要达到什么目的?具有可变用户定义列的数据网格?这是Linq-to-SQL
还是LINQ
?
简易版
硬版
tableOne.Select(lambda expression)
的扩展方法版本(即result_modifier.php
)并创建Anonymous type as an expression dynamically。答案 1 :(得分:0)
如果我理解正确的话。您可以选择主表,然后根据某些条件选择所需的列。这是未经测试的代码
var q = (from pd in tableOne
join od in tableTwo on pd.Field equals od.Field
select new
{
pd,
od
});
if(somecondition)
{
var q1 = from result in q
select q.pd.yourcoloumns;
}
else
{
var q1 = from result in q
select q.od.yourcoloumns;
}
在我的示例中,pd
和od
是您的表格。