2

私のlinqクエリは機能し、linqpadでテストし、結果が返されました。EntityVM ViewModel を使用しようとすると、最後のステップでエラーが発生しました。このエラー メッセージの意味がよくわかりません。誰かが私にそれを説明して、それを修正する方法を教えてください。ありがとうございました。

エラー メッセージ:「クエリから型引数を推測できません」

        var entityVersions = EntityVersionRepository.Get().Where(x => x.Entity.ClientId == clientId);


        var groups = from ev in entityVersions
                     group ev by ev.EntityId
                         into g
                         select g.OrderByDescending(x => x.TaxYear).FirstOrDefault();

        var result = from g in groups
                     select (en => new EntityVM
                                       {
                                           Name = en.EntityName,
                                           Id = en.EntityId  
                                       });
4

1 に答える 1

0

実際にクエリを評価していないことが原因である可能性がありgroupsます(呼び出し.ToList()などによって)。groups最初に評価してみてください。

var groups = (from ev in entityVersions
                 group ev by ev.EntityId
                     into g
                     select g.OrderByDescending(x => x.TaxYear).FirstOrDefault())
             .ToList();

これが問題である場合、クエリから具体的な型を返すときに var を使用してはならない理由の代表的な例です。に変更var groupsした場合List<Group> groups、そのコードはコンパイルさえされないため、プロパティを実際に評価していないことがすぐにわかります (IQueryable<Group>代わりに が返されます)。

于 2012-10-26T22:39:41.537 に答える