我需要return
该人员({1}},ID
,具体取决于username
中写的toolstripstatuslabel
。
我的逻辑是从username
获取textbox
,检查database
table
,然后return
找到用户名的ID
。
但是,我不知道如何返回PersonID
,任何人都可以提供帮助,因为我发现returning
inserted
的{{1}}价值不是我的情况。
业务逻辑代码:
table
谢谢!
答案 0 :(得分:1)
如果有多个人,应该是这样的:
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
)
答案 1 :(得分:1)
假设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
}