私はLinq GroupBy
を使用してグループを作成しています。すべてOKですが、Year
の値でグループ化しようとすると奇妙なエラーが発生します。'g'という名前のローカルまたはパラメータは、そのスコープ内で宣言できません。そのローカルスコープ内でローカルまたはパラメータを定義するために使用されます。
switch (grouping)
{
case "country":
vix = vi.GroupBy(v => v.User.CountryId).Select(g => g.ToList()).ToList();
break;
case "province":
vix = vi.GroupBy(v => v.User.ProvinceId).Select(g => g.ToList()).ToList();
break;
case "city":
vix = vi.GroupBy(v => v.User.CityId).Select(g => g.ToList()).ToList();
break;
case "region":
vix = vi.GroupBy(v => v.User.RegionId).Select(g => g.ToList()).ToList();
break;
case "education":
vix = vi.GroupBy(v => v.User.EducationId).Select(g => g.ToList()).ToList();
break;
case "job":
vix = vi.GroupBy(v => v.User.JobId).Select(g => g.ToList()).ToList();
break;
case "gender":
vix = vi.GroupBy(v => v.User.Gender).Select(g => g.ToList()).ToList();
break;
case "age":
vix = vi.GroupBy(v => v.User.BirthDate.Value.Year).Select(g => g.ToList()).ToList();
break;
}
これはエラー(エラーが唯一の年齢のためにある最後のGROUPBYのためである)である:
その名前が使用されているので、「G」という名前のローカルまたはパラメータは、このスコープ内で宣言することはできませんローカルまたはパラメータを定義する包括的なスコープ内
これは、あなたのメソッドがこのコードブロックの前のどこかで変数 'g'を使用していることを意味します。このコードブロックを別のメソッドにリファクタリングするか、 'Select(g => g.ToList())'を 'Select(stackoverflow => stackoverflow.ToList()) 'のように変更する必要があります – Cameron
「範囲」とはどういう意味ですか? –
再現性のあるサンプルを提供できますか?また、私たちは何のVSバージョンについて話していますか? –