【问题标题】:Linq, datatable and shared propertiesLinq、数据表和共享属性
【发布时间】:2012-08-28 22:09:02
【问题描述】:

我正在尝试执行此 linq 查询,但在编码时收到“EmpCritGID 无法初始化,因为它是共享的”错误。查询数据表并使用共享属性填充现有类中的值以用于后面的 vb.net 代码的正确方法是什么?

If CriteriaFlags.CritOrgFlag AndAlso lblOrgName.Text.Equals(String.Empty) Then lblOrgName.Text = "需要分配组织" lblOrgName.ForeColor = redColor lblOrgName.BackColor = 黄色颜色 万一 暗淡结果 = 来自 c In EmployeeJobCriteria.AsEnumerable() 其中 c.Field(Of Integer)("EmpCritGID").Equals(intEmpCritGID) 选择新的 EmployeeCriteria.CriteriaFlags _ 使用 {.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")} 命名空间目标 公共类 EmployeeCriteria 公共类 CriteriaFlags 公共共享 EmpCritGID 作为整数 公共共享 EmpJobFID 为整数 公共共享 CritFID 为整数 公共共享 NodeGID 为整数 公共共享 CritOrgFlag 为布尔值 公共共享 ShareCritPmtFlag 为布尔值 公共共享 CritWeightFlag 为布尔值 公共共享 CritOppFlag 为布尔值 公共共享 CritActFlag 为布尔值 结束类 结束类 结束命名空间

【问题讨论】:

    标签: linq properties datatable shared


    【解决方案1】:

    删除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

    【讨论】:

    • 那么,我假设你会在我需要的地方初始化 row_databound 函数中的类?
    • 另外,我会使用初始化变量 objEmpCritFlag 作为 New EmployeeCriteria.CriteriaFlags 并在 LINQ 中使用 objEmpCritFlag 吗?
    • 我不知道你在哪里需要它,这根本不重要。您应该将初始化添加到 linq 查询的选择中(它已经在哪里)。当您执行查询时,CriteriaFlags 对象将被创建和初始化。使用变量的位置取决于上下文。您可以链接 linq 查询,在某处调用 ToList 或 ToArray,使用 For Each 或将其用作数据源。但这超出了这个问题的范围。如果他们有帮助,请记住接受/支持答案。 meta.stackexchange.com/questions/5234/…
    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 2018-05-23
    • 2013-11-18
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多