どうすればいいですか
Select top 10 Foo from MyTable
linq to SQLで?
VBの場合:
from m in MyTable
take 10
select m.Foo
これは、MyTableがIQueryableを実装することを前提としています。 DataContextまたは他のプロバイダーを介してアクセスする必要がある場合があります。
また、Fooはプロパティ名にマップされるMyTableの列であると想定しています。
http://blogs.msdn.com/vbteam/archive/2008/01/08/converting-sql-to-linq-part-7-union-top-subqueries-bill-horst.aspx を参照してください=詳細については。
Take method を使用します。
var foo = (from t in MyTable
select t.Foo).Take(10);
VBでは、LINQにはtake式があります。
Dim foo = From t in MyTable _
Take 10 _
Select t.Foo
ドキュメントから:
Take<TSource>
はsource
を列挙し、count
要素が生成されるか、source
に要素がなくなるまで要素を生成します。count
がsource
の要素数を超える場合、source
のすべての要素が返されます。
Take(int n)
メソッドを使用します。
var q = query.Take(10);
OPは実際にオフセットについても言及しているので、たとえば30から60のアイテムを取得する場合は、次のようにします。
var foo = (From t In MyTable
Select t.Foo).Skip(30).Take(30);
オフセットには「スキップ」メソッドを使用します。
制限には「テイク」メソッドを使用します。
@Janei:私の最初のコメントはあなたのサンプルについてです;)
このようにすると、4を取得してから、これら4に並べ替えを適用したいと思います。
var dados = from d in dc.tbl_News.Take(4)
orderby d.idNews descending
select new
{
d.idNews,
d.titleNews,
d.textNews,
d.dateNews,
d.imgNewsThumb
};
IdNewsでtbl_News全体を降順で並べ替えてから4を取得するのとは異なります
var dados = (from d in dc.tbl_News orderby d.idNews descending select new { d.idNews, d.titleNews, d.textNews, d.dateNews, d.imgNewsThumb }).Take(4);
いや?結果が異なる場合があります。
これはC#でうまく機能します
var q = from m in MyTable.Take(10)
select m.Foo
私はこれが好きです:
var dados = from d in dc.tbl_News.Take(4)
orderby d.idNews descending
select new
{
d.idNews,
d.titleNews,
d.textNews,
d.dateNews,
d.imgNewsThumb
};
テイクがクライアントで行われるか、データベースで行われるかは、テイク演算子を適用する場所によって異なります。クエリを列挙する前に(つまり、foreachで使用する前に、またはコレクションに変換する前に)適用すると、テイクにより、dbに「上位n」のSQL演算子が送信されます。 SQLプロファイラーを実行すると、これを確認できます。クエリを列挙した後にテイクを適用すると、LINQがデータベースからデータを取得して列挙するため、クエリが列挙されます。
Take(N)メソッドを使用します。
Array oList = ((from m in dc.Reviews
join n in dc.Users on m.authorID equals n.userID
orderby m.createdDate descending
where m.foodID == _id
select new
{
authorID = m.authorID,
createdDate = m.createdDate,
review = m.review1,
author = n.username,
profileImgUrl = n.profileImgUrl
}).Take(2)).ToArray();
ソートせずにデータベースのデータを取得することは、ランダム取得と同じです。
このようにそれは私のために働いた:
var noticias = from n in db.Noticias.Take(6)
where n.Atv == 1
orderby n.DatHorLan descending
select n;
Take(n)メソッドを使用してから、リストに変換する必要がありました。
var listTest = (from x in table1
join y in table2
on x.field1 equals y.field1
orderby x.id descending
select new tempList()
{
field1 = y.field1,
active = x.active
}).Take(10).ToList();
limit 1
には、メソッドFirstOrDefault()
またはFirst()
を使用します。
例
var y = (from x in q select x).FirstOrDefault();