【发布时间】:2013-04-25 03:19:39
【问题描述】:
我在 sql 表列中有以下类型的列表。
IT-001
IT-002
IT-003
IT-004
我想使用 LINQ 生成下一个代码。目前我正在使用下面的代码。我想知道是否可以使用纯 LINQ 查询而不使用 C# 代码来实现它。如果是怎么办?
private StockDataClassesDataContext dc;
public string getNextItemCode()
{
dc = new StockDataClassesDataContext();
List<string> code = (from tbItem in dc.tblItems
select tbItem.ItemCode).ToList<string>();
List<int> Numbers = new List<int>();
foreach (string item in code)
{
string[] arr = item.Split('-');
Numbers.Add(Convert.ToInt32(arr[1]));
}
int maxNumber = 0;
maxNumber = Numbers.Count > 0 ? Numbers.Max() : 0;
int nextNumber = maxNumber + 1;
string itemCode = "IT-"+nextNumber;
return itemCode;
}
【问题讨论】:
-
为什么不要求数据库通过对该字段进行排序并获取 Last() 来查找最后一个?或者,如果您真的确定它们是连续的,为什么不只是 Count() 它们,添加一个并创建新记录?当然,如果你有两个作家,这一切都不会奏效。
-
为什么要为此使用 LINQ?
getNextItemCode()是无论如何都需要抽象的东西,所以细节在方法中,那么为什么仅仅为了使用 LINQ 就更难添加错误处理/更难调试呢?仅仅因为 LINQ 可以用来解决很多问题并不意味着它应该或者它是最好的解决方案。