पर मैं जो मैंGroupBy SqlFunction QueryOver
var accounts = this.SessionManager.GetActiveSession().QueryOver<Account>();
var q = accounts.Select(Projections.Distinct(
Projections.SqlFunction("substring",
NHibernateUtil.String,
Projections.Property("Name"),
Projections.Constant(1),
Projections.Constant(1))));
का उपयोग कर अधिग्रहण सभी भिन्न खाता नाम उपसर्ग (AZ) की एक सूची है हालांकि मुझे क्या करना चाहते हैं के बजाय एक अलग सूची लौटने का है समूह उपसर्गों और वापसी है उस उपसर्ग के साथ शुरू होने वाले खातों की संख्या, लेकिन मुझे यकीन नहीं है कि क्वेरी का उपयोग करके समूह को कैसे निष्पादित किया जाए क्योंकि यह मानक linq के रूप में सरल नहीं है।
कारण मैं क्वेरीओवर का उपयोग कर रहा हूं और क्वेरी नहीं है क्योंकि किसी कारण से सबस्ट्रिंग फ़ंक्शन स्मृति में किया जा रहा है, न कि डेटाबेस सर्वर पर।
यह यह है कि मैं क्या करने की कोशिश की, लेकिन मैं अभिव्यक्ति SqlFunction में
पहचाने न जाने वाले विधि कॉल निम्न त्रुटि प्राप्त है (
संपादित कैसे मैं आमतौर पर यह
var prefixes = (from acc in this.SessionManager.GetActiveSession().Query<Account>()
group acc by acc.Name.Substring(0, 1)
into grp
select new
{
Prefix = grp.Key,
Count = grp.Count()
});
करना होगा कि "सबस्ट्रिंग ", NHibernateUtil.String, नया [] {संपत्ति (" नाम "), निरंतर (कनवर्ट (1)), कॉन्स्टेंट (कनवर्ट (1))}
var accounts = this.SessionManager.GetActiveSession().QueryOver<Account>().Select(
Projections.Group<string>(x => Projections.SqlFunction("substring", NHibernateUtil.String,
Projections.Property("Name"), Projections.Constant(1),
Projections.Constant(1))),
Projections.Count<string>(x => Projections.SqlFunction("substring", NHibernateUtil.String,
Projections.Property("Name"), Projections.Constant(1),
Projections.Constant(1)))
);
सबस्ट्रिंग फ़ंक्शन को एक अतिरिक्त पैरामीटर की आवश्यकता होती है लेकिन इससे समस्या हल हो जाती है। बहुत धन्यवाद – JConstantine