C# Linq动态选择?
我有下面的代码将表转换为它的轴C# Linq动态选择?,c#,linq,C#,Linq,我有下面的代码将表转换为它的轴 IQueryable<MeterReadingsForChart> meterReadings = MeterReadingManager.GetCustomerMeterReadings(customer.sno, MeterType, Meter, startDate, endDate, DateTimeManager.GetTimeIntervalTypeById(DateRangeType)).AsQueryable(); // meterR
IQueryable<MeterReadingsForChart> meterReadings = MeterReadingManager.GetCustomerMeterReadings(customer.sno, MeterType, Meter, startDate, endDate, DateTimeManager.GetTimeIntervalTypeById(DateRangeType)).AsQueryable();
// meterReadings Output:
// Customer Value ReadingTypes
// cust1 235 T1
// cust1 241 T2
// cust1 765 T3
// cust1 247 T4
// cust1 967 Total
// ..........
var table = MeterReadingManager.GetMeterReadingsPivot(meterReadings, MeterType);
// table Output (pivot of meterReadings):
// Customer T1 T2 T3 T4 Total
// cust1 235 241 765 247 967
// ............
我想动态地获取轴列。使用上面的数组。我的预期数据透视表:
// filtered pivot from meterReadings pivot Output:
// Customer T1 Total
// cust1 235 967
// ............
我该怎么做?动态选择还是另一种方式
转换功能还包括:
return (from m in meterReadings
group m by new { date = m.ReadDate } into g
select new
{
ReadDate = g.Key.date.ToString("dd.MM.yyyy - HH:mm:ss"),
T1 = (from t1 in g
where t1.Name == "T1"
select t1.Value.ToString("0.00 " + t1.Unit + "")).FirstOrDefault(),
T2 = (from t2 in g
where t2.Name == "T2"
select t2.Value.ToString("0.00 " + t2.Unit + "")).FirstOrDefault(),
T3 = (from t3 in g
where t3.Name == "T3"
select t3.Value.ToString("0.00 " + t3.Unit + "")).FirstOrDefault(),
Total_T1 = (from t1 in g
where t1.Name == "Toplam T1"
select t1.Value.ToString("0.00 " + t1.Unit + "")).FirstOrDefault(),
Total_T2 = (from t1 in g
where t1.Name == "Toplam T2"
select t1.Value.ToString("0.00 " + t1.Unit + "")).FirstOrDefault(),
Total_T3 = (from t1 in g
where t1.Name == "Toplam T3"
select t1.Value.ToString("0.00 " + t1.Unit + "")).FirstOrDefault(),
Reactive = (from t1 in g
where t1.Name == "Reaktif"
select t1.Value.ToString("0.00 " + t1.Unit + "")).FirstOrDefault(),
Capasitive = (from t2 in g
where t2.Name == "Kapasitif"
select t2.Value.ToString("0.00 " + t2.Unit + "")).FirstOrDefault()
}).AsQueryable<object>();
return(从米到米)
按新的{date=m.ReadDate}将m分组到g中
选择新的
{
ReadDate=g.Key.date.ToString(“dd.MM.yyyy-HH:MM:ss”),
T1=(从g中的T1开始)
其中t1.Name==“t1”
选择t1.Value.ToString(“0.00”+t1.Unit+).FirstOrDefault(),
T2=(从T2到g)
其中t2.Name==“t2”
选择t2.Value.ToString(“0.00”+t2.Unit+).FirstOrDefault(),
T3=(从T3到g)
其中t3.Name==“t3”
选择t3.Value.ToString(“0.00”+t3.Unit+).FirstOrDefault(),
总_T1=(从T1到g)
其中t1.Name==“Toplam t1”
选择t1.Value.ToString(“0.00”+t1.Unit+).FirstOrDefault(),
总_T2=(从t1到g)
其中t1.Name==“Toplam T2”
选择t1.Value.ToString(“0.00”+t1.Unit+).FirstOrDefault(),
总_T3=(从t1开始,单位为g
其中t1.Name==“Toplam T3”
选择t1.Value.ToString(“0.00”+t1.Unit+).FirstOrDefault(),
反应=(从t1到g)
其中t1.Name==“Reaktif”
选择t1.Value.ToString(“0.00”+t1.Unit+).FirstOrDefault(),
Capasitive=(从t2到g)
其中t2.Name==“Kapasitif”
选择t2.Value.ToString(“0.00”+t2.Unit+).FirstOrDefault()
}).AsQueryable();
谢谢…我解决了这个问题:
var table = MeterReadingManager.GetMeterReadingsPivot(meterReadings, MeterType).Select("new (" + Parameters + ")");
我建议你尽量使你的问题易于阅读,因为有许多未知的类和参数。
var table = MeterReadingManager.GetMeterReadingsPivot(meterReadings, MeterType).Select("new (" + Parameters + ")");