如何将显示成员设置为串联表达式?数据源是 LINQ 查询



我正在尝试将列表框的显示成员设置为来自 linq 查询的串联值:

var query =
     from a in db.Customers
     select a;
listBox1.DataSouce = query;

我希望能够通过执行以下操作来设置显示成员:

listBox1.DisplayMember = "FirstName" + "LastName";

但显然这是行不通的。

我该怎么做?我想棘手的部分是数据源是一个 linq 查询结果对象。但它是可索引的,所以必须有某种方法。

如果你有一个你自己编写的 Customer 类,或者它是通用的但可扩展的,那么在我看来最好的方法是添加一个新属性

namespace SameNameSpaceAsGeneratedCustomerClass {
  public partial class Customer {
    public string FullName { get { return FirstName + " " + LastName; } }
  }
}

如果您无法做到这一点,那么您将需要查看创建一个 ValueConverter http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

偶然想通了:

var query =
                from a in db.LUT_Employees
                where a.position == "Supervisor" && a.department == "Production"
                select new { a, Names = a.lastName + ", " + a.firstName };
            cboProductionSupervisor.DataSource = query;
            cboProductionSupervisor.DisplayMember = "Names";

基本上,我所做的是动态创建一个新字段,就像在SQL中一样,然后将其用作显示成员。

首先我

必须告诉您,LINQ 查询不会自行执行,因此如果您正在编写上述查询,则

var query =
     from a in db.Customers
     select a;
listBox1.DataSouce = query;

您将无法获得所需的输出。

为此,将查询修改为

   var query =  (from a in db.Customers select new{Name = a.FirstName + a.LastName, OtherDetails = a.OtherDetails}).ToList();
listBox1.DataSouce = query;
ListBox1.DataBind();

相关内容

  • 没有找到相关文章

最新更新