【发布时间】:2018-04-07 17:53:26
【问题描述】:
我非常需要帮助,我已经尝试了一段时间了。
所以我有这个查询:
Select name from BlaBlaBla
order by
case when name like '9%' then 1 end,
case when name like '8%' then 1 end,
case when name like '7%' then 1 end,
case when name like '6%' then 1 end,
case when name like '5%' then 1 end,
case when name like '4%' then 1 end,
case when name like '3%' then 1 end,
case when name like '2%' then 1 end,
case when name like '1%' then 1 end,
case when name like '0%' then 1 end,
name
我想在我的解决方案中的一个新的 C#、Asp.Net 类中实现它到域项目,所以它将是一个 OrderType 过滤器,用于某些功能......
现在我有这个:
var param = Expression.Parameter(typeof(T), "item");
var paramName = Expression.Property(param, "Name");
var regexMatch = Expression.Constant("^[0-9]");
var startsWithDigit = Expression.Call(typeof(Regex), "IsMatch",
null, paramName);
var lambda = Expression.Lambda<Func<T, bool>>(startsWithDigit,
param);
return namesList.OrderBy(lambda)
.ThenBy(BlaBla1())
.ThenByDescending(BlaBla2())
.ThenByDescending(BlaBla3())
.ThenBy(BlaBla4());
但它告诉我,Expression 不包含“IsMatch”方法。
你能帮帮我吗? 谢谢!!!
【问题讨论】:
-
看起来您正在使用一些支持 LINQ 的 ORM。哪一个?另外,为什么要手动构造表达式而不是使用 LINQ 语法?
-
您希望在数据库中使用一些 ORM 还是在内存中执行此排序?
-
嗯,这里使用的ORM,是Linq to Sql
-
问题是:我有一个名称列表,其中一些以数字开头,我想在从 0 到 9 排序的列表末尾过滤它们(以数字开头的那些) ...而且我希望所有这些都发生在 Linq 中,ORM 使用 ENTITY 或 ADO(没关系)。
标签: c# sql asp.net linq linq-to-sql