Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架选择列中的所有值_C#_Entity Framework - Fatal编程技术网

C# 使用实体框架选择列中的所有值

C# 使用实体框架选择列中的所有值,c#,entity-framework,C#,Entity Framework,我想从表中获取所有这些值并粘贴到Combobox中 我有这段代码,但我得到System.ObjectDisposedException错误 var items = db.Trouble.Where(u => u.id_Проблемы > 0).Select(u => u.id_Проблемы); id_Trouble_box.Items.Add(items); 如果要将它们全部选中,则不需要Where条件: var items = db.Trouble(); 要添加

我想从表中获取所有这些值并粘贴到Combobox中

我有这段代码,但我得到System.ObjectDisposedException错误

var items = db.Trouble.Where(u => u.id_Проблемы > 0).Select(u => u.id_Проблемы);

id_Trouble_box.Items.Add(items);

如果要将它们全部选中,则不需要Where条件:

var items = db.Trouble();
要添加到组合中,可以设置数据源:

var items = db.Trouble();
id_Trouble_box.DataSource = items.ToList();
id_Trouble_box.DisplayMember = "columnToShow"; // display column
id_Trouble_box.ValueMember = "id_Проблемы"; // id to get on selection as a value
编辑:对于那些不理解此答案为何会修复错误的人:

string defaultConString = @"server=.\SQLExpress;Database=Northwind;Trusted_Connection=yes;";

void Main()
{

    Form f = new Form();
    ComboBox cb = new ComboBox { Top = 10, Left = 10 };

    f.Controls.Add(cb);

    using (var ctx = new MyContext(defaultConString))
    {
        var items = ctx.Customers.Where(c => c.ContactName.Contains("a")).Select(c => c.CompanyName);
        cb.Items.Add(items);
    }
    f.Show();
}


public class MyContext : DbContext
{
  public MyContext(string connectionString)
     : base(connectionString)
  { }
  public DbSet<Customer> Customers { get; set; }
}

public class Customer
{
  [Key]
  public string CustomerId { get; set; }
  public string CompanyName { get; set; }
  public string ContactName { get; set; }
  // ...
//  public virtual List<Order> Orders { get; set; }
}
string defaultConString=@“服务器=。\SQLExpress;数据库=Northwind;可信连接=yes;”;
void Main()
{
表格f=新表格();
组合框cb=新组合框{Top=10,Left=10};
f、 控制。添加(cb);
使用(var ctx=new MyContext(defaultConString))
{
var items=ctx.Customers.Where(c=>c.ContactName.Contains(“a”))。选择(c=>c.CompanyName);
cb.项目。添加(项目);
}
f、 Show();
}
公共类MyContext:DbContext
{
公共MyContext(字符串连接字符串)
:基本(连接字符串)
{ }
公共数据库集客户{get;set;}
}
公共类客户
{
[关键]
公共字符串CustomerId{get;set;}
公共字符串CompanyName{get;set;}
公共字符串ContactName{get;set;}
// ...
//公共虚拟列表顺序{get;set;}
}

在末尾添加一个.ToArray()。可能是在using语句之外添加了项。

我这样解决了这个问题

var items = db.Trouble.Where(u => u.id_Проблемы > 0).Select(u => u.id_Проблемы).ToArray();
for(int i = 0; i < items.Length; i++)
{
    id_Trouble_box.Items.Add(items[i]);
}
var items=db.Trouble.Where(u=>u.id_Пббхх>0)。选择(u=>u.id_Пбббххх)。ToArray();
对于(int i=0;i
您应该通过
.ToArray()
ToList()立即强制执行

阅读下面的文章以更好地理解


那么这应该如何修复
ObjectDisposedException
?@DavidG,可能是因为他试图将IQueryable作为参数添加到项中。添加?那么你应该这么说,否则这只是一个没有解释的代码转储。我不是挑剔,我告诉你,你没有回答被问到的问题。我很抱歉试图帮助你。祝你度过愉快的一天。这两行代码在你的代码中是相邻的还是在不同的位置?@DavidG它们都是什么?@DavidG它们在一起,sorryItems.Add用于添加单个项目。如果一次添加多个,则需要AddRange。您的代码正在将整个集合作为单个项目添加。这是一个问题还是一个答案?@NoreChase这是否回答了您的问题?如果您需要任何帮助,请告诉我。这将修复错误,但代码仍然无法工作。
var items = db.Trouble.Where(u => u.id_Проблемы > 0).Select(u => u.id_Проблемы).ToArray();

id_Trouble_box.Items.Add(items);