LINQ表达式-根据LinkLabel中指定的名称返回用户ID

时间:2018-07-18 15:34:45

标签: c# .net winforms linq lambda

请,我正在尝试访问数据库以访问用户ID。但是,当我尝试访问时,返回的值为0。最初,我在弄清楚如何将此SQL语句(从用户名为'Godymn'的SELECT user_id)更改为LINQ时遇到问题。但是后来我发现我可以使用:

var result = users.Where(x => x.firstname ==“ Godymn”)。Select(x => x.userid);

到目前为止,当我尝试在我的代码中使用查询时,它返回0。但是我需要的是根据linkLabel中指定的名称返回用户ID。我无法弄清楚为什么它不起作用。

将感谢您的帮助。

这是我的代码

private int Chk()
{            
    string link = linkLabelPartner.Text;
    var result = (dynamic)null;
    using (DbModel db = new DbModel())
    {
        result = db.users.Where(x => x.firstname == link).Select(x => x.user_id).FirstOrDefault();
    }
    return result;        
}

这是我用来检查返回内容的按钮。

private void btnTey_Click(object sender, EventArgs e)
{
    int test = Chk();
    MessageBox.Show(test.ToString());
}

3 个答案:

答案 0 :(得分:0)

Godymn下午好。

以下是一些可能的情况:

1-数据库中不存在用户名Godymn 2-user_id为0。

尝试检查这两种情况。

之后,您可以将方法更改为更加“调试友好”的级别。

var result = db.users.First(f => f.firstname == link);

然后,检查result是否为空。如果为null,则在数据库中找不到该名称。 如果不为null,则检查结果是否为0。

为什么使用这种方法:这样,您可以判断问题出在寻找用户时还是绑定ID值时。

答案 1 :(得分:0)

我无法评论,我很抱歉,但首先我会尝试一下:

var foo = db.users.Select(x => x).ToList();

然后您可以像这样调查结果 我想您尝试获取错误的数据(或错误的结构) 当我卡住时,我这样做: enter image description here

或者也许您可以附加对象的结构?

答案 2 :(得分:0)

是的,我能够修复该错误。问题出在Chris Dunaway正确地说的linkLabelPartner.Text上。他一提到链接标签仅包含名字,我就知道那是丢失的部分。它包含名字和姓氏,而我只占名字。因此,返回的值仍为0。因此,我要做的就是将名字和姓氏连接在一起,从而解决了该问题。所以,是的,我最初使用的查询是正确的。

这是代码

    private int Chk()
    {
        string link = linkLabelPartner.Text;
        var result = (dynamic)null;
        using (DbModel db = new DbModel ())
        {
            result = db.users.Where(x => x.lastname + " " + x.firstname == link ).Select(x => x.users).FirstOrDefault();
        }
        return result;
    }     

    private void btnTey_Click(object sender, EventArgs e)
    {
        int test = Chk();
        MessageBox.Show(test.ToString());
    }

非常感谢大家的建议,谢谢。