linq到EF,如何使用'top '方法
本文关键字:top 方法 何使用 EF linq | 更新日期: 2023-09-27 18:10:28
我想使用linq to Entities将top
记录按降序列Value1
排序。
我知道我可以这样写:
MyCollection。orderbydescent (item => item. value1).FirstOrDefault();
但是如何使用下面的方法Top
呢?
System.Data.Objects.ObjectQuery。Top(string, params System.Data.Objects.ObjectParameter[])
编辑:这个答案是在问题特别是关于LINQ to SQL时写的。
System.Data.Objects
用于实体框架,而不是LINQ到SQL,据我所知-但要找到LINQ到SQL或甚至LINQ到对象的前N个值,你通常只使用Take
:
var query = db.Customers
.OrderByDescending(c => c.Value1)
.Take(10);
(我真的鼓励您尝试使用比Value1
更有意义的名称…)
编辑:即使在实体框架中,我通常在LINQ查询中使用Take
-这是表示前N个结果的"LINQ方式"。如果您真的,真的想使用Top
,文档提供了示例—但是您应该考虑为什么您想使用Top
而不是Take
。(你没有给我们任何上下文)
请查看MSDN的示例http://msdn.microsoft.com/en-GB/library/bb155995.aspx
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
string queryString =
@"SELECT VALUE product FROM AdventureWorksEntities.Products AS product";
ObjectQuery<Product> productQuery1 =
new ObjectQuery<Product>(queryString, context, MergeOption.NoTracking);
ObjectQuery<Product> productQuery2 = productQuery1.Top("2");
// Iterate through the collection of Product items.
foreach (Product result in productQuery2)
Console.WriteLine("{0}", result.Name);
}
或者如果您只有List<T>
,请考虑使用Take()
扩展。
List<string> strs = new List<strs>() { "1", "2", "3", "4" };
var firstTwo = strs.Take(2);