আমি এনএইচবারনেট থেকে ফিরে আইকিউয়েরেবলের জন্য লিনকিউ ব্যবহার করছি এবং কয়েকটি ক্ষেত্রের সর্বাধিক মান (গুলি) দিয়ে আমার সারিটি নির্বাচন করতে হবে।
আমি যেটুকু স্টিক করছি সেটিকে আমি সরল করে তুলেছি। আমার টেবিল থেকে এক ক্ষেত্রের সর্বাধিক মান সহ একটি সারি নির্বাচন করতে হবে।
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
এটি ভুল তবে আমি সঠিক ফর্মটি নিয়ে কাজ করতে পারি না।
বিটিডাব্লু, আমি যা অর্জন করতে চাইছি এটি প্রায়:
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();
আমি উপরের ল্যাম্বডা দিয়ে শুরু করেছি তবে আমি লিনিকপ্যাড ব্যবহার করছি সর্বাধিক () নির্বাচনের জন্য সিনট্যাক্স চেষ্টা করে দেখানোর জন্য।
হালনাগাদ
গ্রুপবাই সরানো মুখ্য বিষয় ছিল।
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();