c# - 比较不同列的值后返回字段的 ID

标签 c# mysql database linq linq-to-sql

我需要根据 toolstripstatuslabel 中的 usernamereturn 人员(员工)的 ID 。 我的逻辑是从textbox中获取username,查看databasetable,然后return 找到的用户名的 ID。 但是我不知道如何返回 PersonID,任何人都可以帮忙,因为我发现的研究是 returning inserted 的值表 而不是我的情况。

业务逻辑代码:

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
}

关于c# - 比较不同列的值后返回字段的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34904033/

相关文章:

mysql - 当我使用 --databases ='mydb' 指定时,innobackupex 始终备份 ibdata1

mysql - 使用日期格式的 INSERT ... SELECT

c# - 如何使用 GAC 和 NGEN 部署 C# 应用程序

c# - Microsoft.Office.Tools.Excel 丢失

c# - 基本 C# 属性问题

c# - 使用 C# 将消息以 ASCII 形式写入 MQ

mysql - 选择每个用户最近的事件到列

php - 移动上传文件(...): failed to open stream: No such file or directory

sql-server - VB6 ADODB.Recordset RecordCount 属性总是返回 -1

c - 使用 syslog 函数将日志值插入数据库