我在数据库中有Code
类varchar
列,其中仅包含数字。我使用下面的方法来获取下一个代码,它工作正常。但我更喜欢在SQL端完成所有计算和类型转换,以减少开销。使用下面的代码,我检索所有不需要的数据。任何想法都非常感激。
public string GetNextCode(int type)
{
var codeList = (from o in ObjectQuery
where o.Type == Type
select o.Code).ToList<string>();
List<int> list = codeList.Select(int.Parse).ToList();
int nextDL = list.Max() + 1;
return nextDL.ToString();
}
答案 0 :(得分:1)
您可以尝试类似下面的内容,它会按照代码对结果集进行排序,然后获取第一个结果。请注意我没有测试过,但我认为它应该可行。
var codeList = (from o in ObjectQuery
where o.Type == Type
select o.Code).OrderByDescending(
x => x.Code).First()
您也可以使用OrderByDescending().First()
OrderBy().Last()
答案 1 :(得分:1)
这是我提出的解决方案:
var max = (from o in ObjectQuery
let num = ObjectQuery.Where(i => i.Type == Type).Select(i => i.Code).Cast<int>().Max()
select num).FirstOrDefault() + 1;
return max.ToString();