Yanıtlar:
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5);
take
veritabanından sadece ilk 5 satır için bir yolu var mı ?
Çözüm:
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5);
[ @Ajni tarafından verilen cevaptan biraz daha açıklayıcı bir cevap vermek .]
Bu ayrıca LINQ akıcı sözdizimi kullanılarak da gerçekleştirilebilir :
var list = ctn.Items
.Where(t=> t.DeliverySelection == true && t.Delivery.SentForDelivery == null)
.OrderBy(t => t.Delivery.SubmissionDate)
.Take(5);
Not her yöntem (diğer bir deyişle Where
, OrderBy
, Take
) Bu LINQ tablosunda görünür bir alır lambda ifade , bağımsız değişken olarak. Ayrıca, belgelerin aşağıdakilerle Enumerable.Take
başladığını unutmayın :
Bir dizinin başlangıcından itibaren belirtilen sayıda bitişik öğeyi döndürür.
Additional information
Bazen bir modeli görünüm modellerine bağlamak ve bir tür dönüştürme hatası vermek gerekir . Bu durumda ToList()
yöntemi kullanmalısınız .
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5).ToList();
Sadece, sql komut dosyasında olduğu gibi, Select-> Where-> Select dizisine yabancı olduğunuzu düşünmek Select- > From-> Where gibidir.
Ancak, Sql Engine içinde, ' Kimden-> Nerede-> Seç ' sırasında da ayrıştırıldığını bilmiyor olabilirsiniz, Doğrulamak için basit bir komut dosyası deneyebilirsiniz
select id as i from table where i=3
ve iş olmaz, nedeni motor ayrıştırmak olacaktır Nerede önce Select o i takma bilmez, bu yüzden nerede . Bu işi yapmak için deneyebilirsiniz
select * from (select id as i from table) as t where i = 3