将实体对象转换为IEnumerable

时间:2011-06-28 12:27:35

标签: c# wpf linq entity-framework

我有一个SQL数据库,其中包含一个包含人员联系人记录的Contants表。 我将联系人记录对象传递给ContactsDetailsControl()方法,以显示所选记录的联系人详细信息。

ItemsListBox.ItemsSource需要一个IEnumerable对象列表

将这个实体对象转换为IEnumberable的最简单的方法是什么,而不必像下面这样做?

  

ItemsListBox.ItemsSource = new List()。Add(contact);

public ContactsDetailsControl(ProActive.Contact contact)
{
   InitializeComponent();
   List<Contact> l = new List<Contact>();
   l.Add(contact);

   ItemsListBox.ItemsSource = contact[];
}

5 个答案:

答案 0 :(得分:3)

以下是制作包含单个对象的IEnumerable的通用方法。

public ContactsDetailsControl(ProActive.Contact contact)
{
   InitializeComponent();
   ItemsListBox.ItemsSource = MakeMeEnumerable<Contact>(contact);
}

private IEnumerable<T> MakeMeEnumerable<T>(T Entity)
{
    yield return Entity;
}

答案 1 :(得分:1)

一种简单但不漂亮的方法是使用Enumerable.Repeat

ItemsListBox.ItemsSource = Enumerable.Repeat(contact, 1);

答案 2 :(得分:1)

ItemsListBox.ItemsSource = new [] { contact };

答案 3 :(得分:0)

您将始终必须创建新列表并将联系人添加到其中。单个联系人与联系人列表不同,您不能(也不应该)直接投射到联系人。

您可能想要创建另一个继承自List<contact>的类,您可以实例化它,并在构造函数中加载您需要的联系人。

答案 4 :(得分:0)

当你说你试图显示单个记录的信息时,似乎没有人问的问题是你为什么使用ListBox?

如果要将模板应用于项目,请使用ContentPresenter并设置ContentTemplate。 (内部是列表框在为源中的项生成视觉效果时所执行的操作)。