我有一个数据集,其中包含包含列的数据表 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