我需要获取实体集合的特定属性的不同值列表。
因此,假设表 A 具有字段 x、y、z、1、2、3,其中 x 是 PK(因此不在表中)。
我需要获取 y、z、1、2 或 3 的所有唯一值,而不必在我的方法中知道我得到的是哪个字段。所以该方法的模式是:
public List<ObjectName> GetUniqueFieldValues(string fieldname)
“ObjectName”对象是具有两个属性的对象,上面的方法将为每个结果填充至少一个属性。
另一个问题中的某个人使用 ParameterExpression 和 Expression 类有类似的答案,但并没有真正提供足够的信息来帮助我完成特定任务。
我也尝试过反射,但 Linq 在 Select 表达式中当然不喜欢这样。
我只会使用 if 并称其为好,但实际表/对象中确实有大量字段/属性,所以这是不切实际的。如果基表发生更改,这也将为我节省一些重构。
我正在尝试做的 SQL 版本:
SELECT Distinct [usersuppliedfieldname] from TableName where [someotherconditionsexist]
我已经拥有的伪代码:
public List<ReturnObject> GetUniqueFieldValues(int FkId, ConditionObject searchmeta)
{
using(DbEntities db = new DbEntities())
{
// just getting the basic set of results, notice this is "Select *"
var results = from f in db.Table
where f.FkId == FkId && [some static conditions]
select f;
// filtering the initial results by some criteria in the "searchmeta" object
results = ApplyMoreConditions(results, searchmeta);
// GOAL - Select and return only distinct field(s) specified in searchmeta.FieldName)
}
}