0

我正在使用 LINQ/C# 并尝试从函数返回查询的结果。我所拥有的在下面并且不起作用。有什么建议么?我知道这应该进入我的模型,但一步一步。当我可以让它工作时,我将转向模型。

目前我在 button1_Click 中的列表框只返回表名。示例表 1.表 2。

        public IQueryable runDBQuery()
        {

            Variables obj = new Variables();
            var urlList = from SURL in db.SteamURLs
                          where obj.UserID == SURL.uID
                          select SURL;

            dataGridView1.DataSource = urlList;

            return urlList;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var urlList = runDBQuery();

            // This doesn't work?
            listBox1.DataSource = urlList;
        }

回答:

public IList<SteamURL> runDBQuery()
        {

            Variables obj = new Variables();
            var query = from SURL in db.SteamURLs
                          where obj.UserID == SURL.uID
                          select SURL;

            var urlList = query.ToList();
            dataGridView1.DataSource = urlList;

            urlList.ToList();

            return urlList;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var urlList = runDBQuery();

            // This doesn't work?
            listBox1.DataSource = urlList;
            listBox1.DisplayMember = "itemURL";

        }
4

1 回答 1

1

您试图告诉 ListBox 数据绑定到由SteamURL实体表示的整个字段集,但是 Listbox(它只有一个可以显示的列)不知道要显示哪个字段,所以它只是显示表示“一个对象绑定到列表中的这个条目”的默认字符串。

您需要告诉 ListBoxDisplayMember属性是什么。

SteamURL例如,如果在被调用URL(只是猜测)上有一个属性,那么在这一行之前

listBox1.DataSource = urlList;

把这个:

listBox1.DisplayMember="URL";

它应该可以工作。顺便说一下,我支持上面的所有建议,在这种情况下不要返回或绑定到 IQueryable - 您应该首先使用 ToList() 或类似方法转换 urlList:

var query= from SURL in db.SteamURLs
                         where obj.UserID == SURL.uID
                         select SURL;
//this "materialises" the query and fetches the results back from the database. 
        var urlList= query.ToList(); 
//This means that you won't inadvertently trigger another database access by referring to urlList later on.
       dataGridView1.DataSource = urlList;
       return urlList;
于 2013-09-24T00:17:49.293 回答