如何使用QueryOver API执行以下LINQ to NHibernate查询.这将从DB获取Item的所有记录的列表,并将状态为"Returned"的Items放置到列表的末尾.状态是Enum,它映射到数据库中的nvarchar.
var workList = session.Query<Item>()
.OrderBy(i=> i.Status == Status.Returned ? 1 : 0)
.ToList();
Run Code Online (Sandbox Code Playgroud)
SQL等价物是
SELECT *
FROM Item
ORDER BY case when Status='Returned' then 1 else 0 end
Run Code Online (Sandbox Code Playgroud)
我当然试过了
var workList = session.QueryOver<Item>()
.OrderBy(i => i.Status == Status.Returned ? 1 : 0).Asc
.ToList();
Run Code Online (Sandbox Code Playgroud)
但我得到以下内容
InvalidOperationException:从范围''引用的'MyProject.Model.Entities.Item'类型的变量'i',但它未定义
我不能使用LINQ,因为在这种情况下有一些其他功能的问题.
假设我有以下列表:
IList<string> list = new List<string>();
list.Add("Mouse");
list.Add("Dinner");
list.Add("House");
list.Add("Out");
list.Add("Phone");
list.Add("Hat");
list.Add("Ounce");
Run Code Online (Sandbox Code Playgroud)
使用LINQ如何选择包含"ou"的单词并对选择进行排序,以便在开头列出以"ou"开头的单词,然后列出包含但不以"ou"开头的单词.我正在尝试创建的列表将是:
Ounce
Out
House
Mouse
Run Code Online (Sandbox Code Playgroud)
我想出了以下内容,但它无法正常工作:
list.Where(x => x.Contains("ou"))
.OrderBy(x => x.StartsWith("ou"))
.Select(x => x);
Run Code Online (Sandbox Code Playgroud)