我想写一个 LINQ 查询,可以使用动态属性名称。例如,如果属性名是“test”,则简单查询如下:
var test = testList.Select(x => x.test).Distinct().ToList();
但是我希望能够动态生成属性名称,例如:
var propertyName = "test";
var test = testList.Select(x => x.propertyName).Distinct().ToList();
我因为“propertyName”不是一个真正的属性而收到错误提示。
最好的方法是什么?
testList
中充满了ExpandoObjects
(不推荐),你可以将它们强制转换为IDictionary<String, Object>
并使用字符串进行索引。你也可以使用反射(也不是特别推荐)。但是你很可能不需要这样做。你使用这个LINQ查询解决什么问题? - 15ee8f99-57ff-4f92-890c-b56153Expression<Func<T>>
或其他方式构建一个属性选择器 lambda。我不确定这是否是推荐的方法,但可能比其他方法更好。 - 15ee8f99-57ff-4f92-890c-b56153