私のSQL Serverクエリ(下)は完全に正常に動作し、C#でLinQに変換しようとしています。LinQに 'count'句を使用してSQLクエリを変換します
SQLクエリ:(
、私は以下の形式でLINQクエリを描画することができるよ
私に正しい出力を与える:
SELECT addressline3, city, COUNT(*) as 'InstitutionNumber'
FROM institutionenquiries
WHERE CITY = 'AHMEDABAD'
GROUP BY addressline3, city
ORDER BY city;
所望の出力がありますCOUNT(*) as 'InstitutionNumber'
を除く)。
LINQクエリ:
var obj = (from u in dbContext.InstitutionEnquiry
where u.City == data.Trim().ToLower()
select new {
AddressLine3 = u.AddressLine3.Trim().ToLower(),
City = u.City.Trim().ToLower(),
InstitutionNumber = (from a in dbContext.InstitutionEnquiry
where a.City == data.Trim().ToLower()
select a).Count()
}).ToList();
これは私のすべてのための'InstitutionNumber' = 3
カウントを与えます。
カウントのアスペクトを正しく取得できません。私はthisポストの答えを参照して、それは私にカウントを与えるが、私はLinQクエリ内でそれを入れ子にすることはできません。
有用な入力をいただければ幸いです。あなたが使用することができ、大文字と小文字の区別を無視する:
var obj = dbContext.InstitutionEnquiry
// WHERE CITY = 'AHMEDABAD'
.Where(w => w.City == "AHMEDABAD") // => Note
// GROUP BY addressline3, city
.GroupBy(g => new {g.AddressLine3, g.City})
// SELECT addressline3, city, COUNT(*) as 'InstitutionNumber'
.Select(c => new {c.Key.AddressLine3, c.Key.City, InstitutionNumber = c.Count()})
// ORDER BY city
.OrderBy(o=> o.City)
.ToList();
注:
は、なぜあなたは小文字に 'データ' を変換している(u.City
今、私たちはクエリを書くことができます== data.Trim()。ToLower())データベースからの 'u'が大文字の場合? – jdweng