C# 使用Linq从相同名称中选择自定义id

C# 使用Linq从相同名称中选择自定义id,c#,linq,C#,Linq,我有一个包含ID、名称和颜色字段的表。我在windows窗体中有一个名称列表列表框,我希望当我选择每个名称时,它会从数据库返回所选项目id。为此,我使用了以下代码: public int GetIdByName(string name) { return MyTable.Where(c => c.Name == name).Select(c => c.ID).First(); } 但它只能返回相似名称的第一个id。也就是说,当表中有许多相似名

我有一个包含ID、名称和颜色字段的表。我在windows窗体中有一个名称列表
列表框
,我希望当我选择每个名称时,它会从数据库返回所选项目id。为此,我使用了以下代码:

    public int GetIdByName(string name)
    {
        return MyTable.Where(c => c.Name == name).Select(c => c.ID).First();
    }
但它只能返回相似名称的第一个id。也就是说,当表中有许多相似名称时,它只能返回来自第一个名称的第一个id。 如何解决此问题?

公共列表GetIdByName(字符串名称)
public List<int> GetIdByName(string name)
{
    return MyTable.Where(c => c.Name == name).Select(c => c.ID).ToList();
}
{ 返回MyTable.Where(c=>c.Name==Name); }
我找到了解决方案。 我得到了要列出的所有Id,在listBox\u SelectedIndexChanged事件中,我得到了每个selectedItem Id

    public List<int> GetAllID()
    {
        return MyTable.Select(c => c.ID).ToList();
    }     

    private void listBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        var idList = db.MyTable.GetAllID();
        int id = idList[listBox.SelectedIndex];
    }
public List GetAllID()
{
返回MyTable.Select(c=>c.ID.ToList();
}     
私有无效列表框\u SelectedIndexChanged(对象发送方,事件参数e)
{
var idList=db.MyTable.GetAllID();
int id=idList[listBox.SelectedIndex];
}

列表框可以容纳实际对象,而不仅仅是字符串。因此,当他们选择一行时,您已经知道Id或颜色,而不会再次访问数据库。请删除First()。如果删除First(),我将收到以下错误:无法将类型“System.Linq.IQueryable”隐式转换为“int”。