Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF Linq在类初始值设定项中为实体分配数组成员_C#_.net_Asp.net Mvc_Linq_Entity Framework - Fatal编程技术网

C# EF Linq在类初始值设定项中为实体分配数组成员

C# EF Linq在类初始值设定项中为实体分配数组成员,c#,.net,asp.net-mvc,linq,entity-framework,C#,.net,Asp.net Mvc,Linq,Entity Framework,以下是从DB获取所需数据并使用类初始值设定项初始化属性成员的代码段: var list = (from spcdata_tb in _dbContext.SPCDATA_TB from wh_master_tb in _dbContext.WH_MASTER_TB where spcdata_tb.FACTORY_CODE == factoryCode && spcdata_t

以下是从DB获取所需数据并使用类初始值设定项初始化属性成员的代码段:

 var list =
            (from spcdata_tb in _dbContext.SPCDATA_TB
             from wh_master_tb in _dbContext.WH_MASTER_TB
             where spcdata_tb.FACTORY_CODE == factoryCode
             && spcdata_tb.LINE_CODE == lineCode
             && spcdata_tb.MODEL_NO == modelNumber
             && spcdata_tb.FACTORY_CODE == wh_master_tb.WH_CODE
             && spcdata_tb.LINE_CODE == wh_master_tb.LINE_CODE
             select new SPCMeasureData() 
             { 
               operDateString = spcdata_tb.DATA_WDATE, 
               operTimeString = spcdata_tb.DATA_WTIME,
               inputTimeString = spcdata_tb.DATA_ITIME,
               modelNumString = spcdata_tb.MODEL_NO,
               DataList[0] = spcdata_tb.DATA1,
               DataList[1] = spcdata_tb.DATA2,
               DataList[2] = spcdata-tb.DATA3
             });
但是,它抛出了一个编译器错误,即找不到数据列表[0]和数据列表[1]

public class SPCMeasureData
{
    public DateTime operDateString { get; set; }
    public TimeSpan? operTimeString { get; set; }
    public TimeSpan? inputTimeString { get; set; }
    public string modelNumString { get; set; }
    public string modelNameString { get; set; }
    public string lotNumString { get; set; }
    public int dataSeqString { get; set; }
    public string factoryCodeString { get; set; }
    public string factoryNameString { get; set; }
    public string lineCodeString { get; set; }
    public string lineNameString { get; set; }
    public string cusNameString { get; set; }
    public string equipNumString { get; set; }
    public float?[] dataList = new float?[30];

    public float?[] DataList
    {
        get { return dataList; }
        set { dataList = value; }
    }
}
我怀疑,虽然DataList的实际数组成员可以从类初始值设定项初始化,但它的数组成员不能以同样的方式分配


有没有办法克服这个问题?

对象初始值设定项语法只能识别对象的直接成员。因此,在本例中,它可以识别数组属性,
DataList
,但不能识别
DataList[index]
。解决方法是使用数组初始值设定项语法。当您有一个复杂的属性,一个属于另一个类的属性时,也会发生类似的情况。在这种情况下,请使用另一个对象初始值设定项语法。例如:

public class OtherClass
{
    public string Prop1 { get; set; }
}

public class MainClass
{
    public OtherClass ComplexProperty { get; set; }
    public float?[] ArrayFloatProperty { get; set; }
    public List<string> CollectionProperty { get; set; }
}

我猜唯一的方法是在对象初始值设定项中初始化数组,如
DataList=new[]{spcdata\u tb.DATA1、spcdata\u tb.DATA2、spcdata tb.DATA3}
。但也不确定这是否有效。
var mainObj = new MainClass
              {
                    ArrayFloatProperty = new float? [] {0f, 2f, 3f},
                    ComplexProperty = new OtherClass { Prop1 = "string property" },
                    CollectionProperty = new List<string> { "str1", "str2", "str3" }
              };