मैं NHibernate से लौटे एक IQueryable पर LINQ का उपयोग कर रहा हूं और मुझे कुछ क्षेत्रों में अधिकतम मूल्य (s) के साथ पंक्ति का चयन करने की आवश्यकता है।
मैंने थोड़ा सा सरलीकृत किया है जिस पर मैं चिपका हूं। मुझे अपनी तालिका में से एक पंक्ति का चयन एक क्षेत्र में अधिकतम मान के साथ करने की आवश्यकता है।
var table = new Table { new Row(id: 1, status: 10), new Row(id: 2, status: 20) }
from u in table
group u by 1 into g
where u.Status == g.Max(u => u.Status)
select u
यह गलत है लेकिन मैं सही फॉर्म नहीं दे सकता।
BTW, जो मैं वास्तव में प्राप्त करने की कोशिश कर रहा हूं वह लगभग यही है:
var clientAddress = this.repository.GetAll()
.GroupBy(a => a)
.SelectMany(
g =>
g.Where(
a =>
a.Reference == clientReference &&
a.Status == ClientStatus.Live &&
a.AddressReference == g.Max(x => x.AddressReference) &&
a.StartDate == g.Max(x => x.StartDate)))
.SingleOrDefault();
मैंने उपरोक्त लैम्बडा के साथ शुरुआत की है लेकिन मैं अधिकतम () का चयन करने के लिए वाक्यविन्यास को आजमाने और काम करने के लिए LINQPad का उपयोग कर रहा हूं।
अपडेट करें
GroupBy निकालना महत्वपूर्ण था।
var all = this.repository.GetAll();
var address = all
.Where(
a =>
a.Reference == clientReference &&
a.Status == ClientStatus.Live &&
a.StartDate == all.Max(x => x.StartDate) &&
a.AddressReference == all.Max(x => x.AddressReference))
.SingleOrDefault();