如何修复linq join中的"Anonymous type does not contain a definition for 'field'"错误?



我有一个数据集,其中包含包含列的数据表 table1

工厂 ID、工厂名称、订单周、供应商 ID、供应商名称、组

ID、组名称、工作日、订单计数、保留计数

然后我有一个可枚举的分组日期,其中包含字段 OrderWeek, WeekDay, SupplierId, PlantId, DeliveredCount

这是由

var GroupedByDate = from r in dsDta.Tables[0].Rows.Cast<DataRow>()
                    let eventTime = (DateTime)r["EntryTime"]
                    group r by new
                    {
                        WeekStart = new DateTime(eventTime.Year, eventTime.Month, eventTime.AddDays(-(int)(eventTime.DayOfWeek + 6) % 7).Day),
                        WeekDay = eventTime.DayOfWeek
                    } 
                    into g
                    select new
                    {
                        g.OrderWeek,
                        g.WeekDay,
                        g.Supplier,
                        g.SupplierID,
                        g.PlantId,
                        DeliveredCount = g.Count()
                    };

我想使用

var result = from T1 in table1.Rows.Cast<DataRow>() 
                         join T2 in GroupedByDate 
                         on new
                         {
                             PlantID = T1.Field<int>("PlantId"),
                             SupplierID = T1.Field<int>("SupplierId"),
                             OrderWeek = T1.Field<DateTime>("OrderWeek"),
                             WeekDay = T1.Field<int>("Weekday")
                         }
                         equals new
                         {
                             T2.PlantID,
                             T2.SupplierID,
                             T2.OrderWeek,
                             T2.WeekDay
                         } into JoinedData
                         from TotalData in JoinedData
                         select new
                         {
                             PlantId = TotalData.PlantID,
                             PlantName = T1.Field<string>("PlantName"),
                             OrderWeek = TotalData.OrderWeek,
                             SupplierId = TotalData.SupplierID,
                             SupplierName = T1.Field<string>("SupplierName"),
                             GroupId = T1.Field<int>("FuelGroupId"),
                             GroupName = T1.Field<string>("FuelGroupName"),
                             Weekday = TotalData.WeekDay,
                             OrderCount = T1.Field<int>("OrderCount"),
                             ReservedCount = T1.Field<int>("ReservedCount"),
                             DeliveredCount = TotalData.Field<int>("DeliveredCount")
                         };

除了最后一行之外,一切都很好

DeliveredCount = TotalData.Field<int>("DeliveredCount")

给我带来了一个错误:

错误 CS1929 '' 不包含 'Field' 的定义,最佳扩展方法重载 'DataRowExtensions.Field(DataRow, string)' 需要类型为"DataRow"的接收器。

我的代码有什么问题?

似乎 TotalData 不是 DataRow 类型,您不能使用 .字段()尝试使用

DeliveredCount = TotalData.DeliveredCount

相关内容

最新更新