我正在尝试从实体中对一些数据进行排序,然后再将它们传递给另一个函数。 tableName和columnName都是动态选择的。这就是我正在做的事情:
string tableName = cboSelectTable.Text.ToString();
var comboBoxColumn = from a in Context.RULES where
a.ISCOMBOBOXCOLUMN == "Y" select a.COLUMN;
foreach (var colName in comboBoxColumn)
{
var getTableName = entityModel.GetType()
.GetProperty(tableName)
.GetValue(entityModel, null);
var getData = ((IQueryable<object>)getTableName)
.Where(colName + "!=null")
.Select(colName)
.Distinct()
.OrderBy('"'+ colName +'"');
dgvCboColumn(getData, colName);
}
但这不是对数据进行排序。我也尝试了其他一些方法,但无法弄明白。我该如何解决这个问题?
答案 0 :(得分:1)
我认为不是那样,.OrderBy(...)有效。尝试按属性排序:
SomeList.OrderBy(l => l.SomeAttribute);
我怀疑按字符串排序导致每个元素按相同属性排序,因此根本不排序。另外,我不确定,如果你的where子句就是这样的。
已经回答了另一个相关的SO问题。您可能需要查看它:click me!
答案 1 :(得分:0)
您只需将 Select
放在OrderBy
:
var getData = ((IQueryable<object>)getTableName)
.Where(colName + "!=null")
.OrderBy(colName)
.Select(colName)
.Distinct();
这将允许您引用列名。(由于某种原因似乎不起作用)。
或者,您可以引用当前实例:
var getData = ((IQueryable<object>)getTableName)
.Where(colName + "!=null")
.Select(colName)
.Distinct()
.OrderBy("it");