2012-08-28 2 views
0

이 linq 쿼리를 수행하려고하지만 "EmpCritGID를 초기화 할 수 없으므로 공유 중"오류가 발생합니다. datatable을 쿼리하고 vb.net 코드에서 사용하기 위해 공유 속성이있는 기존 클래스의 값을 채우는 올바른 방법은 무엇입니까?Linq, 데이터 가능 및 공유 속성

 

    If CriteriaFlags.CritOrgFlag AndAlso lblOrgName.Text.Equals(String.Empty) Then 
     lblOrgName.Text = "Need Org Assigned" 
     lblOrgName.ForeColor = redColor 
     lblOrgName.BackColor = yellowColor 
    End If 

    Dim result = From c In EmployeeJobCriteria.AsEnumerable() 
     Where c.Field(Of Integer)("EmpCritGID").Equals(intEmpCritGID) 
     Select New EmployeeCriteria.CriteriaFlags _ 
     With {.EmpCritGID = c.Field(Of Integer)("EmpCritGID"), _ 
     .EmpJobFID = c.Field(Of Integer)("EmpJobFID"), _ 
     .CritFID = c.Field(Of Integer)("CritFID"), _ 
     .NodeGID = c.Field(Of Integer)("NodeGID"), _ 
     .CritOrgFlag = c.Field(Of Boolean)("CritOrgFlag"), _ 
     .CritWeightFlag = c.Field(Of Boolean)("CritWeightFlag"), _ 
     .CritOppFlag = c.Field(Of Boolean)("CritOppFlag"), _ 
     .CritActFlag = c.Field(Of Boolean)("CritActFlag")} 

    Namespace Objective 

     Public Class EmployeeCriteria 

      Public Class CriteriaFlags 

       Public Shared EmpCritGID As Integer 
       Public Shared EmpJobFID As Integer 
       Public Shared CritFID As Integer 
       Public Shared NodeGID As Integer 
       Public Shared CritOrgFlag As Boolean 
       Public Shared ShareCritPmtFlag As Boolean 
       Public Shared CritWeightFlag As Boolean 
       Public Shared CritOppFlag As Boolean 
       Public Shared CritActFlag As Boolean 

      End Class 

     End Class 

    End Namespace 

답변

0

Shared 키워드를 제거하십시오.

Public Class CriteriaFlags 

    Public EmpCritGID As Integer 
    Public EmpJobFID As Integer 
    Public CritFID As Integer 
    Public NodeGID As Integer 
    Public CritOrgFlag As Boolean 
    Public ShareCritPmtFlag As Boolean 
    Public CritWeightFlag As Boolean 
    Public CritOppFlag As Boolean 
    Public CritActFlag As Boolean 

End Class 

공유 (정적) 변수 또는 속성을 설정하여 개체를 초기화하는 것은 의미가 없습니다. 어쨌든 그들은 모든 가치관을 공유 할 것입니다.

http://visualbasic.about.com/od/learnvbnet/a/sharedinstance.htm

+0

그래서, 난 당신이 내가 필요로하는 row_databound 함수에서 클래스를 초기화하는 것이 겠지? – webapparchitect

+0

또한, 초기화 된 변수를 사용하여 새로운 EmployeeCriteria.CriteriaFlags로 objEmpCritFlag을 말하고 LINQ 내부에서 objEmpCritFlag를 사용합니까? – webapparchitect

+0

나는 당신이 그것을 어디에서 필요로하는지 전혀 모른다. 그것은 전혀 중요하지 않다. linq 쿼리 (이미있는 위치)의 선택 항목에 초기화를 추가해야합니다. 쿼리를 실행하면'CriteriaFlags' 오브젝트가 생성되고 초기화됩니다. 변수를 사용하는 곳은 컨텍스트에 따라 다릅니다. Linq 질의를 연결하거나, ToList 또는 ToArray를 어딘가에 호출하거나, For Each를 사용하거나, 뭔가를 DataSource로 사용할 수 있습니다. 그러나 그것은이 질문의 범위를 벗어납니다. 도움이된다면/upvote 대답을 수락하는 것을 잊지 마십시오. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –