C# LINQ查询帮助

C# LINQ查询帮助,c#,database,linq-to-sql,C#,Database,Linq To Sql,我试图根据相应的键检索列 “从菱形中选择*,其中p_Id=“+p_Id 我遵循MSDN示例,他们是这样做的: CurrencyManager cm = ((CurrencyManager)this.BindingContext[myDatabaseDataSet, "Items.ItemDiamond"]); IBindingList list = (IBindingList)cm.List; 但列表的相关视图数据只返回p_Id=1的数据。怎么了 完整代码:

我试图根据相应的键检索列

“从菱形中选择*,其中p_Id=“+p_Id

我遵循MSDN示例,他们是这样做的:

        CurrencyManager cm = ((CurrencyManager)this.BindingContext[myDatabaseDataSet, "Items.ItemDiamond"]);
        IBindingList list = (IBindingList)cm.List;
但列表的相关视图数据只返回p_Id=1的数据。怎么了

完整代码:

    private void Viewdiamonds(int p_Id)
    {
        this.Cursor = Cursors.WaitCursor;


        frmDiamond frmd = new frmDiamond();

        CurrencyManager cm = ((CurrencyManager)this.BindingContext[myDatabaseDataSet, "Items.ItemDiamond"]);
        IBindingList list = (IBindingList)cm.List;

        frmd.ShowDialog(p_Id, this, list);

        this.Cursor = Cursors.Default;

    }
    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {


        if (e.ColumnIndex == 1 && e.RowIndex != -1 && !dataGridView1.Rows[e.RowIndex].IsNewRow)
        {
            DataGridViewCell cell = this.dataGridView1[e.ColumnIndex - 1, e.RowIndex];
            int p_Id = Convert.ToInt32(cell.Value);
            this.Viewdiamonds(p_Id);

        }
    }
编辑:

我有两个相关的专栏,Items和Diamond。我有一个datagridview控件,它显示Items表中的数据。我添加了LinkView类型的列,因此当用户单击ViewDiamond时,会弹出一个新表单并显示与该项目相关的菱形。我查看了MSDN DataGridView控件示例,他们使用上面的代码实现了该示例。我对代码做了一些调整以适应我的应用程序。上面的代码怎么了?因为它似乎无法根据其相对p_Id显示数据。或者我认为p_Id有问题,无论其值如何,Currency manager似乎只检索与p_Id=1对应的数据


我希望这能澄清问题。

没关系,我是用sql rdr做的:

        BindingSource bs = new BindingSource();

        string connstring = "Data Source=MyDatabase.sdf;Persist Security Info=False";
        string sqlqry = "SELECT * from diamond where p_Id=" + p_Id;
        SqlCeConnection conn = new SqlCeConnection(connstring);
        SqlCeCommand cmd = new SqlCeCommand(sqlqry, conn);
        conn.Open();

        SqlCeDataReader rdr = cmd.ExecuteReader();
        bs.DataSource = rdr;
        rdr.Close();
        conn.Close();

在MyDbContext.diamond中,使用linq的等价物是什么?

var result=from d,其中d.p\u Id==p\u Id选择d;是的,我也这么认为,但无法将其绑定到我的datagridview。我尝试将其绑定到列表,然后从dgv读取列表,但无法。你知道怎么做吗?好的,这是:var qry=来自myDatabaseDataSet中的d.Diamond,其中d.p_Id==p_Id选择d;bs.DataSource=qry.AsDataView();