SqlSugar 问题记录
有就记录
1.Select 返回List<String>
// 查询表中所有数据public List<ConfProcessParamModel> GetAllProcessParams(){try{// 使用SQLSugar的查询功能获取所有数据// List<ConfProcessParamModel> datatest = _db.Queryable<ConfProcessParamModel>().ToList();// return datatest;//根据ProcessParaName 去重var datatest = _db.Queryable<ConfProcessParamModel>().Distinct().GroupBy(it => it.ProcessParamName).ToList();// .Select(it => it.ProcessParamName)// 当使用 Select()时,返回类型由选择的字段决定// 选择单个字段会返回该字段类型的列表return datatest;}catch (Exception e){CustomMessageBoxView.ShowAsync("错误", e.ToString());Console.WriteLine(e.ToString());throw;}}
查询所有,根据ProcessParaName 去重
一开始写成
//根据ProcessParaName 去重 var distinctData = _db.Queryable<ConfProcessParamModel>() .Distinct() .GroupBy(it => it.ProcessParamName) .Select(it => it.ProcessParamName) .ToList(); return distinctData;
报错:不能将表达式类型 'System.Collections.Generic.List<string>' 转换为返回值类型 'System.Collections.Generic.List<LingMESClient.Models.SystemSettingPageModel.BasicFunctionsModel.ProcessSettingModel.ConfProcessParamModel>'
但是,使用SQLSugar的查询功能获取所有数据,却又是正确不报错的,为什么?
// return _db.Queryable<ConfProcessParamModel>().ToList();
这一段返回的是整个实体类对象的集合List<ConfProcessParamModel>
报错原因:
var distinctData = _db.Queryable<ConfProcessParamModel>().Distinct().GroupBy(it => it.ProcessParamName).Select(it => it.ProcessParamName).ToList(); return distinctData; // 这里是 List<string>,不是 List<ConfProcessParamModel>
.Select(it => it.ProcessParamName)
当使用 Select()时,返回类型由选择的字段决定
选择单个字段会返回该字段类型的列表
通过 .Select(it => it.ProcessParamName)只选择了单个字段
返回类型变成了 List<string>(字符串列表)
与方法要求的返回类型 List<ConfProcessParamModel>不匹配