0

我在数据库中有一个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();
}
4

2 回答 2

1

您可以尝试类似下面的方法,它按代码降序排列结果集,然后获取第一个结果。请注意,我没有对此进行测试,但我认为它应该可以工作。

var codeList = (from o in ObjectQuery
                     where o.Type == Type
                     select o.Code).OrderByDescending(
                             x => x.Code).First()

而不是OrderByDescending().First()你也可以使用OrderBy().Last()

于 2013-07-17T05:08:45.317 回答
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();
于 2013-07-17T06:14:37.793 回答