2012-01-10 55 views
0

我在我的WindowsForm应用程序中使用LINQ to Entites。使用列表填充列表框<Entity>

我试图填充查询结果的Lisbox:

所以我的数据源是一个List,用户在我的数据库中的表,在我的模型的EntityType。

问题是我想让显示器成员变成3个不同列的连接。 (User.Firstname +“”+ user.LastName +“ - ”+ user.userCode)

和ValueMember是user.ID;

我可以用4个项目创建一个userItem的结构,遍历用户列表并将它们添加到另一个列表。但是这似乎是双重处理。

回答

3

合并列的其余部分的值可以在局部类自定义属性这样的扩展实体:

public partial class User 
{ 
    public string Description 
    { 
     get 
     { 
      return string.Format("{0} {1} - {2}", FirstName, LastName, UserCode); 
     } 
    } 
} 

如果你不希望添加的属性,你也可以使用LINQ的投影来创建自定义列表与计算性能:

var listdata = (from u in Users 
       select new 
       { 
        Description = string.Format("{0} {1} - {2}", u.FirstName, u.LastName, u.UserCode). 
        Id = u.Id;  
       }.ToList(); 

然后,你可以绑定的ListData你的列表框。

+0

我最终按照你的建议扩展了我的实体。是String.format比只是“”+“”+ - “”更有效率?或者你只是为了美观而喜欢它 – michael 2012-01-11 03:16:10

+0

我一直认为string.Format更有效率,这就是为什么我在这个例子中使用它,但当我搜索一个参考时,我碰到了http://stackoverflow.com/questions/16432/ c-sharp-string-output-format-or-concat,看起来拼接更快! – 2012-01-11 13:55:25

2

你为什么不在你的model中创建一个property,它返回三个columns/properties的连接值。然后设置DisplayMemeber等于该属性

另一种方法可能是在表中添加Computed Columns。通过表达

+0

我会拍摄任何人添加一个计算列到数据库实质上是一个显示属性。只是说。不是一个好地方。 – slugster 2012-01-10 07:24:20

+0

我不会把它放在hte数据库上,但是在LINQ模型中可以接受吗? – michael 2012-01-11 03:06:55