Trước hết, xin lỗi vì các lớp tên chung chung có tính chất excesive. Chủ nhân của tôi là hoang tưởng và tôi biết chắc chắn anh ta đi lang thang trang web này. Ok, vì vậy tôi có mã này:Gọi là lỗi mơ hồ khi sử dụng LINQ
var fooObj = new MyFooClass()
{
fooField1 = MyEnum.Value3,
fooField2 = false,
fooField3 = false,
fooField4 = otherEntity.OneCollection.ElementAt(0) as MyBarClass
}
nơi otherEntity.OneCollection là một ISet. ISet là một lớp sưu tập NHibernate triển khai IEnumerable. Nếu tôi cố gắng biên dịch mã này tôi nhận được lỗi này:
Error 2 The call is ambiguous between the following methods or properties:
'System.Linq.Enumerable.ElementAt<MyFirm.Blah.Blah.ClassyClass> (System.Collections.Generic.IEnumerable<MyFirm.Blah.Blah.ClassyClass>, int)'
and
'System.Linq.Enumerable.ElementAt<MyFirm.Blah.Blah.ClassyClass>(System.Collections.Generic.IEnumerable<MyFirm.Blah.Blah.ClassyClass>, int)'
Nhưng nếu tôi loại bỏ bằng cách sử dụng System.Linq vào đầu của lớp và thay đổi mã này:
var fooObj = new MyFooClass()
{
fooField1 = MyEnum.Value3,
fooField2 = false,
fooField3 = false,
fooField4 = System.Linq.Enumerable
.ElementAt(otherEntity.OneCollection, 0) as MyBarClass
}
nó biên dịch và làm việc. (? toán tử để kiểm tra xem OneCollection có xóa các phần tử vì mục đích rõ ràng)
Có ai giải thích lỗi này cho tôi không?
Trong trường hợp có liên quan: Tôi đang sử dụng Visual Studio 2008, nhắm mục tiêu .NET Framework 3.5 và sử dụng ReSharper 5.1.
LƯU Ý.- Chỉnh sửa để làm rõ cụ thể IEnumerable là bộ sưu tập, xin lỗi vì điều đó.
Dường như bạn đã tham chiếu 2 phiên bản 'System.Linq.Enumerable' –
bạn đã tìm thấy giải pháp chưa? có vấn đề gì thế? Tôi thực sự tò mò vì đây là vấn đề khá phổ biến – quetzalcoatl
Vâng. Tôi hoàn toàn không thể tìm thấy tham chiếu dư thừa của System.Linq.Enumerable, nhưng tôi có thể tiếp tục làm những gì tôi đề cập đến trong câu hỏi ban đầu, thay vì gọi ElementAt là một phương thức mở rộng, tôi gọi nó như một phương pháp bình thường sử dụng không gian tên đầy đủ, tức là: System.Linq.Enumerable.ElementAt (collection, index) thay vì collection.ElementAt (chỉ mục) đẹp hơn và dễ đọc hơn. – CMPerez