- 目录
- Dynamic 动态属性/值 的获取
- List合并 覆盖其中的属性
- List<List>的值获取(SelectMany)
- 自定义对象的Distinct()
- 在对象的基础上修改对象的属性
所有Linq 尽量都使用ToList();否则可能执行结果无效,是未执行前的结果 一般先Where写在Select前
Dynamic 动态属性/值 的获取
Dynamic data;
foreach (var columnData in (IDictionary<string,object>)data)
{
Var ColumnName = columnData.Key.ToString();
Var Value = (object)columnData.Value==null?null:columnData.Value.ToString();
}
**List合并 覆盖其中的属性**
var result = _dbContext.Select<DataFillingTRQViewModel>("VVALUE AS TRQ1,ENDTIME AS DATATIME")
.From("G历史_日表")
.QueryMany();
var trqValues = _dbContext.Select<DataFillingTRQViewModel>("TRQ2,PCL,EXPLANATION,REPORT_TIME AS DATATIME")
.From(tableName)
.QueryMany();
result = result.GroupJoin(trqValues, left => left.DataTime, right => right.DataTime,
(x, y) => new DataFillingTRQViewModel
{
DataTime = DateTime.Parse(x.DataTime).ToString("yyyy-MM-dd"),
TRQ1 = x.TRQ1,
TRQ2 = y.Select(s => s.TRQ2).FirstOrDefault(),
PCL = y.Select(s => s.PCL).FirstOrDefault(),
Explanation = y.Select(s => s.Explanation).FirstOrDefault()
}).ToList();
}
List<List>的值获取(SelectMany)
var tempPro = List<Dictionary<string, MapStationLocationInfoViewModel>>();
var tempStation = List< MapStationLocationInfoViewModel>();
tempStation = tempPro.SelectMany(sm => sm).Where(c_w => c_w.Key == station).Select(s => s.Value).ToList().Count > 0 ? tempPro.SelectMany(sm => sm).Where(c_w => c_w.Key == station).Select(s => s.Value).ToList()[0] : null;
var count = tempStation.Where(w => w.PointState == "0").ToList().Count;
自定义对象的Distinct()
//定义函数:
public class FillingDataParameterViewModelCompare : IEqualityComparer<FillingDataParameterViewModel>
{
public bool Equals(FillingDataParameterViewModel x, FillingDataParameterViewModel y)
{
return (x.Id == y.Id);
}
public int GetHashCode(FillingDataParameterViewModel obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
//调用:
result.Condition = condition.Select(s=>
new FillingDataParameterViewModel
{
Id=s.Unit1Id,
Description=s.Unit1Desc
}).Distinct(new FillingDataParameterViewModelCompare()).ToList();
在对象的基础上修改对象的属性
var query = someList.Select(x => { x.SomeProp = "foo"; return x; })