Выберите все значения в столбце с Entity Framework - PullRequest
0 голосов
/ 23 марта 2020

Я хочу получить все эти значения из таблицы Trouble и вставить в Combobox.

enter image description here

У меня есть этот код, но я получаю System.ObjectDisposedException ошибка

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

id_Trouble_box.Items.Add(items);

Ответы [ 4 ]

1 голос
/ 24 марта 2020

Вы должны форсировать Immediately excution с помощью .ToArray() или ToList()

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

id_Trouble_box.Items.Add(items);

Прочитайте следующую ветку, чтобы лучше понять.

Производительность LINQ - отложено v / s немедленное исполнение

1 голос
/ 23 марта 2020

Добавить .ToArray () в конце? Возможно, вы добавляете элементы вне оператора использования?

0 голосов
/ 23 марта 2020

Я решил проблему таким образом

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]);
}
0 голосов
/ 23 марта 2020

Если вы хотите выбрать их все, тогда вам не нужны критерии Где:

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; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...