[英]Moving C# function to expression for use in Entity Framework / SQL Select
[英]SELECT UNTIL in SQL with Entity Framework
我想選擇行,直到找到確定的數字ID。 如果我的數據按ID排序,則可以很容易地解決問題。
Id Name
-----------
1 Bob
2 Eve
3 Alice
4 Michael
5 Anne
6 Mike
要獲得所有項目,直到找到ID 4,以下SQL語句就足夠了:
SELECT * FROM Users WHERE Id <= 4
如果數據是按名稱排序的,並且在找到ID 4之前,我仍然想獲得這些物品,那么我將無法提出一個好的解決方案。
Id Name
-----------
3 Alice
5 Anne
1 Bob
2 Eve
4 Michael
6 Mike
要定義的語句的輸出應為:
Id Name
-----------
3 Alice
5 Anne
1 Bob
2 Eve
4 Michael
編輯1:
使用以下語句,輸出幾乎是我所需要的,但是缺少ID 4的項目。
queryable.OrderBy(o => o.Name).TakeWhile(o => o.Id != 4);
Id Name
-----------
3 Alice
5 Anne
1 Bob
2 Eve
是否可以在ID 4中包含該項目?
編輯2:
現在,我將采用這種方法:
queryable.OrderBy(o => o.Name).TakeWhile(o => o.Id != 4).Union(queryable.Where(o => o.Id == 4))
由於ID是唯一的,因此UNION語句應該沒有問題。 但是我不確定這句話是否是最有效的。
Context.Table.OrderBy(p => p.Name).TakeWhile(p => p.id != 4);
var result = Users.TakeWhile((u,i)=> i == 0 || Users.ElementAt(i-1).Id != 4);
另一種方法:
var result = Users.TakeWhile(u=>u.Id!=4)
.Union(Users.SkipWhile(u=>u.Id!=4).Take(1));
var results = from n in names.TakeWhile( n => n.Id != 4)
.Union(names.Where(n => n.Id == 4)) select n;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.