【问题标题】:C# linq with server based databaseC# linq 与基于服务器的数据库
【发布时间】:2017-03-10 04:41:53
【问题描述】:

id Char(5) 作为主键有问题,项目需要我 用一些数字和字符的组合来制作id 例如P0001,插入新数据时,新数据的PK是P0002,很快。

有人可以帮我写代码吗? 我知道逻辑,但我不知道如何使用 linq 从数据库中获取数据。

context = new CarRentalLinqDataContext(); 
Car car = new Car(); 
car.carName = textBox_CarName.Text; 
int year = Int32.Parse(textBox_CarYear.Text); 
car.carYear = year; 
var id = context.Cars.Max(x => car.car_id); 
id = id.Substring(id.LastIndexOf(car.car_id)); 
int i = Convert.ToInt32(id); i += 1; 
string Code = "C000" + i.ToString(); 
car.car_id = Code; context.Cars.InsertOnSubmit(car); 
context.SubmitChanges();

【问题讨论】:

  • 你的问题不清楚
  • 显示您面临 LINQ 问题的代码
  • context = new CarRentalLinqDataContext();汽车 car = new Car(); car.carName = textBox_CarName.Text; int year = Int32.Parse(textBox_CarYear.Text); car.carYear = 年; var id = context.Cars.Max(x => car.car_id); id = id.Substring(id.LastIndexOf(car.car_id)); int i = Convert.ToInt32(id);我 += 1;字符串代码 = "C000" + i.ToString(); car.car_id = 代码; context.Cars.InsertOnSubmit(car); context.SubmitChanges();

标签: c# database linq desktop-application


【解决方案1】:

您在给定表中创建新 ID 时似乎遇到了问题。您可以执行以下操作:

1:由于主键是已知的字符和数字组合,因此您可以对行进行词法排序并获得最大值。见how to select max of mixed string/int column

2:删除字符串中的所有字符。 Source

string intPartInKeyString = Regex.Replace(id, "[A-Za-z]", ""); // Remove all non digits

3:通过String获取整数到int转换:Source

int maxIntValueInKey = Convert.ToInt32(intPartInKeyString);

4:通过将零填充到递增的 id 来获取新的 ID:Source

string newId = "P" + (++maxIntValueInKey).ToString().PadLeft(4, '0');

【讨论】:

  • 是这样的吗? var id = context.Cars.Max(x => car.car_id); string intPartInKeyString = Regex.Replace(id, "[A-Za-z]", ""); int maxIntValueInKey = Convert.ToInt32(intPartInKeyString);字符串 newId = "C" + (++maxIntValueInKey).ToString().PadLeft(3, '0'); car.car_id = newId;
  • 如何使用Linq获取表中的所有id?我认为它发生是因为我无法检索 id var id = context.Cars.Max(x => car.car_id); // 这不起作用
  • @WilliamHuang 是的,您的第一条评论似乎有正确的代码。为了获得最大的 id,你得到了什么?如果它返回 null,那么您可以像这样进行 null 检查:stackoverflow.com/questions/20392753/…
猜你喜欢
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 2016-08-23
  • 2018-08-15
  • 1970-01-01
相关资源
最近更新 更多