আমার এই SQL
বিবৃতিটি একটি Linq-Entity
প্রশ্নের কাছে অনুবাদ করতে হবে ...
SELECT name, count(name) FROM people
GROUP by name
আমার এই SQL
বিবৃতিটি একটি Linq-Entity
প্রশ্নের কাছে অনুবাদ করতে হবে ...
SELECT name, count(name) FROM people
GROUP by name
উত্তর:
তবে সর্বদা বার্তাগুলির জন্য কনসোল / লগতে সন্ধান করুন। আপনি যদি এমন কোনও বিজ্ঞপ্তি দেখতে পান যে আপনার ক্যোয়ারী এসকিউএলে রূপান্তরিত হতে পারে না এবং স্থানীয়ভাবে মূল্যায়ন করা হয় তবে আপনার এটি পুনরায় লেখার প্রয়োজন হতে পারে।
সত্তা ফ্রেমওয়ার্ক ((এখন সত্তা ফ্রেমওয়ার্ক কোর ১.০ / ২.০ নামে নতুন নামকরণ করা হয়েছে ) উত্পাদিত এসকিউএলে GroupBy()
অনুবাদ করার জন্য এখনও সমর্থন করে না GROUP BY
(এমনকি চূড়ান্ত ১.০ রিলিজে এটি হবে না)। যে কোনও গ্রুপিং যুক্তি ক্লায়েন্টের পক্ষ থেকে চলবে, যার ফলে প্রচুর ডেটা লোড হতে পারে।
অবশেষে এর মতো লিখিত কোড স্বয়ংক্রিয়ভাবে গ্রুপের মাধ্যমে গ্রুপ ব্যবহার শুরু করবে, তবে আপাতত আপনার খুব সতর্ক হওয়া দরকার যদি আপনার সম্পূর্ণ গোষ্ঠীবিহীন ডেটাসেটকে মেমরিতে লোড করা পারফরম্যান্সের সমস্যার কারণ হয়ে দাঁড়ায়।
দৃশ্যের জন্য যেখানে এটি একটি চুক্তি-বিভক্তকারী আপনাকে নিজের হাতে এসকিউএল লিখতে হবে এবং EF এর মাধ্যমে এটি চালিত করতে হবে।
সন্দেহের ভিত্তিতে যদি এসকিএল প্রোফাইলার ফায়ার করে এবং কী উত্পন্ন হয় তা দেখুন - যা সম্ভবত আপনার করা উচিত।
https://blogs.msdn.microsoft.com/dotnet/2016/05/16/annoucing-entity-framework-core-rc2
একটি Dictionary
দ্রুত বর্ধনের জন্য ফলাফল সংগ্রহ করা (যেমন একটি লুপে) একটি দরকারী এক্সটেনশন হ'ল :
var resultDict = _dbContext.Projects
.Where(p => p.Status == ProjectStatus.Active)
.GroupBy(f => f.Country)
.Select(g => new { country = g.Key, count = g.Count() })
.ToDictionary(k => k.country, i => i.count);
মূলত এখানে পাওয়া গেছে: http://www.snippetsource.net/Snippet/140/groupby-and-count-with-ef-in-c
নেট কোর ২.১ দ্বারা গ্রুপের একটি সাধারণ উদাহরণ এখানে
var query = this.DbContext.Notifications.
Where(n=> n.Sent == false).
GroupBy(n => new { n.AppUserId })
.Select(g => new { AppUserId = g.Key, Count = g.Count() });
var query2 = from n in this.DbContext.Notifications
where n.Sent == false
group n by n.AppUserId into g
select new { id = g.Key, Count = g.Count()};
যা অনুবাদ করে:
SELECT [n].[AppUserId], COUNT(*) AS [Count]
FROM [Notifications] AS [n]
WHERE [n].[Sent] = 0
GROUP BY [n].[AppUserId]
EF 6.2 এর সাথে এটি আমার পক্ষে কাজ করেছিল
var query = context.People
.GroupBy(p => new {p.name})
.Select(g => new { name = g.Key.name, count = g.Count() });