Я использую .NET 3.5 В моем классе DataLayer у меня есть ссылки на System.Core, System.Data.Linq, System.Data.DataSetExtensions.Но я не могу использовать эту функцию в запросе Linq, если у меня Option Strict ON :
Dim query = From st In db.Students _
From c In db.Countries.Where(Function(c) c.Id = st.CountryId).DefaultIfEmpty _
From r In db.Rooms.Where(Function(r) r.Id = st.RoomId).DefaultIfEmpty _
From b In db.Buildings.Where(Function(b) b.Id = r.BuildingId).DefaultIfEmpty _
From es In db.Essays.Where(Function(es) es.StudentId = st.Id).DefaultIfEmpty _
Select st.Id, st.FullName, c.CountryName, r.RoomNumber, b.BuildingName, es.Eassay
Это приведет к следующей ошибке:
Overload resolution failed because no accessible 'Where' can be called with these arguments:
Extension method 'Public Function Where(predicate As System.Linq.Expressions.Expression(Of System.Func(Of Country, Integer, Boolean))) As System.Linq.IQueryable(Of Country)'
defined in 'System.Linq.Queryable': Nested function does not have the same signature as delegate 'System.Func(Of Country, Integer, Boolean)'.
Extension method 'Public Function Where(predicate As System.Linq.Expressions.Expression(Of System.Func(Of Country, Boolean))) As System.Linq.IQueryable(Of Country)' defined in 'System.Linq.Queryable': Option Strict On disallows implicit conversions from 'Boolean?' to 'Boolean'.
Extension method 'Public Function Where(predicate As System.Func(Of Country, Integer, Boolean)) As System.Collections.Generic.IEnumerable(Of Country)' defined in 'System.Linq.Enumerable': Nested function does not have the same signature as delegate 'System.Func(Of Country, Integer, Boolean)'.
Extension method 'Public Function Where(predicate As System.Func(Of Country, Boolean)) As System.Collections.Generic.IEnumerable(Of Country)' defined in 'System.Linq.Enumerable': Option Strict On disallows implicit conversions from 'Boolean?' to 'Boolean'..........
"Где«Предложение является членом System.Linq.Queryable
Открытая общая функция Where (из TSource) (Источник ByVal как System.Linq.IQueryable (Of TSource), предикат ByVal как System.Linq.Expressions.Выражение (Of System.Func (Of TSource, Boolean))) Как System.Linq.IQueryable (Of TSource)
И «DefaultIfEmpty» является членом System.Linq.Queryable
Общедоступная общая функция DefaultIfEmpty (Of TSource) (Источник ByVal как System.Linq.IQueryable (Of TSource)) Как System.Linq.IQueryable (Of TSource)
Если я установил Option Strict OFF , проблем нет .
Как использовать эти методы расширения System.Linq в проекте VB.NET с Option Strict ON?Спасибо