2012-10-03 4 views
0

일부 EntityFramework C# 코드를 VB.NET에 이식하려고합니다. 나는 다른 온라인 코드 변환기를 시도하고있다. 그러나 그들은 나를 위해이 문제를 해결할 수 없다.C# linq 코드를 VB로 변환하십시오. [편집]

나는이 두 가지 기능을 가지고 있습니다.

public List<T> Find<T>(Func<T, bool> predicate) where T : class 
    { 
     var objectSet = db.CreateObjectSet<T>(); 
     return objectSet.Where<T>(predicate).ToList(); 
    } 

    public void Delete<T>(Func<T, bool> predicate) where T : class 
    { 
     var objectSet = db.CreateObjectSet<T>(); 
     IEnumerable<T> records = from x in objectSet.Where<T>(predicate) select x; 

     foreach (T record in records) 
     { 
      objectSet.DeleteObject(record); 
     } 
    } 

지금 나에게 말해 컨버터이 :

Public Function Find(Of T As Class)(predicate As Func(Of T, Boolean)) As List(Of T) 
    Dim objectSet = db.CreateObjectSet(Of T)() 
    Return objectSet.Where(Of T)(predicate).ToList() 
End Function 

Public Sub Delete(Of T As Class)(predicate As Func(Of T, Boolean)) 
    Dim objectSet = db.CreateObjectSet(Of T)() 
    Dim records As IEnumerable(Of T) = From x In objectSet.Where(Of T)(predicate) Select x 

    For Each record As T In records 
     objectSet.DeleteObject(record) 
    Next 
End Sub 

하지만이 두 가지 오류, objectSet.Where<T>(predicate)에 둘 다 얻을 : 액세스 가능한이 숫자도지지 않습니다 '어디'가 있기 때문에

과부하 해상도가 실패를 형식 인수.

+1

동일한 코드를 두 번 게시했습니다. –

+1

vb.net 코드를 포함 할 수 있습니까? – Jake1164

+0

예, 내 게시물을 편집합니다. – Mazdak

답변

4

Where 전화에서 유형 인수를 제거하면 불필요합니다. 둘째, 스타일을 결정하십시오. LINQ 또는 함수를 사용하십시오. 둘 다 사용할 수는 없습니다. 이다

,

  • 쓰기 중 하나

    Dim records As IEnumerable(Of T) = From x In objectSet Where predicate(x) Select x 
    

    ...하지만 VB에서 당신은 생략 할 수 Select x :

    Dim records As IEnumerable(Of T) = From x In objectSet Where predicate(x) 
    
  • 또는 쓰기 :

동일 함 Find와 동일합니다. 간단히 작성하십시오 :

Return objectSet.Where(predicate).ToList() 
관련 문제