C# 如何使用c对combobox进行Linq查询#

C# 如何使用c对combobox进行Linq查询#,c#,entity-framework,linq,C#,Entity Framework,Linq,我有一个让我发疯的简单问题。我试图查询一个数据实体,在我尝试引用外部数据之前,一切都正常。在下面的代码中(这非常有效),我想将.where clientID==15更改为。如果客户端ID是组合框中显示的值,则组合框valuemember是一个整数: private void cboxcos_SelectionChangeCommitted(object sender, EventArgs e) { using (var context2 = new tvdm())

我有一个让我发疯的简单问题。我试图查询一个数据实体,在我尝试引用外部数据之前,一切都正常。在下面的代码中(这非常有效),我想将.where clientID==15更改为。如果客户端ID是组合框中显示的值,则组合框valuemember是一个整数:

 private void cboxcos_SelectionChangeCommitted(object sender, EventArgs e)
    {
        using (var context2 = new tvdm())
        {
            var cus = context2.tblContacts
                .Where(c => c.ClientID == 15)
               .Select(c => new {c.LastName, c.FirstName, c.JobTitle, c.Telephone, c.Mobile, c.EMail })
                .OrderBy(p => p.LastName)
                .ToList();

            dataGridView1.DataSource = cus;               

        }
    }
任何简单的帮助都将不胜感激


我将VS2015社区与C#和EF6一起使用,我想您需要

var cus = context2.tblContacts
    .Where(c => c.ClientID == Convert.ToInt32(myComboBox.SelectedItem))
    .Select(c => new {c.LastName, c.FirstName, c.JobTitle, c.Telephone, c.Mobile, c.EMail })
    .OrderBy(p => p.LastName)
    .ToList();

我想你需要像这样的东西

var cus = context2.tblContacts
    .Where(c => c.ClientID == Convert.ToInt32(myComboBox.SelectedItem))
    .Select(c => new {c.LastName, c.FirstName, c.JobTitle, c.Telephone, c.Mobile, c.EMail })
    .OrderBy(p => p.LastName)
    .ToList();

首先获取值,将其转换为正确的类型,然后在linq查询中使用该参数:

    private void cboxcos_SelectionChangeCommitted(object sender, EventArgs e)
    {
        int value = (int)comboBox1.SelectedValue;
        using (var context2 = new tvdm())
        {
            var cus = context2.tblContacts
                .Where(c => c.ClientID == value)
               .Select(c => new { c.LastName, c.FirstName, c.JobTitle, c.Telephone, c.Mobile, c.EMail })
                .OrderBy(p => p.LastName)
                .ToList();

            dataGridView1.DataSource = cus;

        }
    }

首先获取值,将其转换为正确的类型,然后在linq查询中使用该参数:

    private void cboxcos_SelectionChangeCommitted(object sender, EventArgs e)
    {
        int value = (int)comboBox1.SelectedValue;
        using (var context2 = new tvdm())
        {
            var cus = context2.tblContacts
                .Where(c => c.ClientID == value)
               .Select(c => new { c.LastName, c.FirstName, c.JobTitle, c.Telephone, c.Mobile, c.EMail })
                .OrderBy(p => p.LastName)
                .ToList();

            dataGridView1.DataSource = cus;

        }
    }
}


}

事实上,我的结局是:

private void cboxcos_SelectionChangeCommitted(object sender, EventArgs e)
    {
        using (var context2 = new tvdm())
        {
            int value = (int)cboxcos.SelectedValue;
            var cus = context2.tblContacts
                .Where(c => c.ClientID == value)
               .Select(c => new {c.LastName, c.FirstName, c.JobTitle, c.Telephone, c.Mobile, c.EMail })
                .OrderBy(p => p.LastName)
                .ToList();

            dataGridView1.DataSource = cus;               

        }
    }

事实上,我最终得到了:

private void cboxcos_SelectionChangeCommitted(object sender, EventArgs e)
    {
        using (var context2 = new tvdm())
        {
            int value = (int)cboxcos.SelectedValue;
            var cus = context2.tblContacts
                .Where(c => c.ClientID == value)
               .Select(c => new {c.LastName, c.FirstName, c.JobTitle, c.Telephone, c.Mobile, c.EMail })
                .OrderBy(p => p.LastName)
                .ToList();

            dataGridView1.DataSource = cus;               

        }
    }

你得到了什么错误?我只是不能让它达到可以编译的状态,intellisense只是在它下面加下划线。所以你得到了一个编译器错误。哪一个?你得到了什么错误?我只是不能让它达到可以编译的状态,intellisense只是在它下面加下划线。所以你得到了一个编译器错误。哪一个?很好用,非常感谢你的帮助。我现在可以开始理解它,然后推进我的项目。这非常有效,非常感谢你的帮助。我现在可以开始理解它,然后推进我的项目。