比较不同列的值后返回字段的 ID
本文关键字:返回 字段 ID 比较 | 更新日期: 2023-09-27 18:31:19
我需要return
人(员工)的ID
,具体取决于写在toolstripstatuslabel
中的username
。我的逻辑是从textbox
获取username
,检查database
table
,然后return
找到的用户名的ID
。但是我不知道如何归还PersonID
,任何人都可以帮忙,因为我发现的研究returning
inserted
table
的价值,而不是我的情况。
业务逻辑代码:
public List<Person> getEmployeeByID(string empName)
{
LinqToSqlDataContext database = new LinqToSqlDataContext();
return database.Persons.Where(emp => emp.personName.Contains(empName)).ToList();
//return the ID of the person which carries the textbox's name
}
谢谢!
假设 empName 是唯一的用户名,您可以编写:
public int getEmployeeID(string empName)
{
LinqToSqlDataContext database = new LinqToSqlDataContext();
return database.Persons
.Where(emp => emp.personName.Contains(empName))
.Single().Id;
//return the ID of the person which carries the textbox's name
}
如果 empName 可能与数据库中的任何记录都不匹配,则可以检查这种可能性。在这里,如果没有匹配项,我返回 null,并使用新的 C#6 语法功能来避免单独检查 SingleOrDefault() 是否返回 null。请注意,如果有多个匹配项,这将引发异常,这很可能是您想要的。FirstOrDefault() 将静默忽略具有相同(假定唯一)用户名的其他行。
public int? getEmployeeID(string empName)
{
LinqToSqlDataContext database = new LinqToSqlDataContext();
return database.Persons
.Where(emp => emp.personName.Contains(empName))
.SingleOrDefault()?.Id;
//return the ID of the person which carries the textbox's name
}
如果有多个人,它应该是这样的:
public List<String> getEmployeeByID(string empName)
{
LinqToSqlDataContext database = new LinqToSqlDataContext();
return database.Persons.Where(emp => emp.personName.Contains(empName)).Select(c => c.ID).ToList();
}
或者,如果您只想返回一个人,您可以使用 FirstOrDefault
或 SingleOrDefault
.例如:
public String getEmployeeByID(string empName)
{
LinqToSqlDataContext database = new LinqToSqlDataContext();
return database.Persons.FirsOrDefault(emp => emp.personName.Contains(empName)).ID;
}
此外,请注意根据需要将方法的返回类型更改为List<String>
或String
。(我假设您的ID
属于String
型)