[英]Dynamic distinct values using Linq to SQL
我不确定我写的标题是否足够,但是我会尽力在这里解释我要完成的工作:
我正在尝试重新创建用于查询TestColumn
不同数据的TestColumn
:
List<string> groupQuery = (from p in testDepo
group p by new { p.TestColumn}
into distinctTest
select distinctTest.First().TestColumn).ToList();
但是,而不是静态调用TestColumn
。 我想动态地将名称: TestColumn
传递给变量,然后使用变量名称进行不同的值查询。
到目前为止,我有这个:
string primaryColumn = "TestColumn"
List<string> groupQuery= (from p in testDepo
group p by new { primaryColumn }
into distinctTest
select distinctTest.First().GetType().GetProperty(primaryColumn).GetValue(distinctTest.First()).ToString()).ToList();
我知道我可能在做一些愚蠢的事情,但是我现在无法完全将其包裹住。 我的动态查询只有一半有效。 它仅获得第一个Distict值,而不获得其他值。 谁能帮我吗?
您可以使用属性列字符串从Expression
创建Func
,如下所示:
var primaryColumn = "TestColumn";
var param = Expression.Parameter(typeof(Test), "p");
var col = Expression.Property(param, primaryColumn);
var lambda = Expression.Lambda(col, param);
var func = lambda.Compile();
然后像这样在查询中使用它:
List<string> groupQuery= (from p in testDepo
group p by func.DynamicInvoke(p)
into distinctTest
select distinctTest.First()
.GetType()
.GetProperty(primaryColumn)
.GetValue(distinctTest.First())
.ToString()
).ToList()
什么是TestDepro? 您需要能够通过名称返回列,例如p [primaryColumn]。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.