2

我有一个简单的 linq 查询,它返回一组客户。客户由五个字段组成,其中一些字段可能为空。

公司、事业部、事业部、产品组、联系人

一家大公司的客户可能在所有五个领域都有价值(以下是虚构的!):

Microsoft - Windows - 开发人员组 - 开始菜单团队 - Bob Jones

较小的客户可能是:

Bob 的早餐角 - NULL - NULL - NULL - Bob Jones

所以我有一个下拉列表,我想在其中列出所有客户:

        var qryGetClients = from m in db.clients
                            select new
                            {
                                clientid = m.clientID,
                                corpName = m.corpName,
                                buName = m.buName,
                                divName = m.divName,
                                pgName = m.pgName,
                                contactName = m.contactName

                            };



        DDClientList.DataSource = qryGetClients;
        DDClientList.DataTextField = "completeclientname";
        DDClientList.DataValueField = "clientid";
        DDClientList.DataBind();

现在我知道我可以在查询中执行此操作以将字段连接到一个字段中:

    completeclientname= m.corpName + " " + m.buName + " " + m.divName + " " + m.pgName + " " + m.contactName

但是,如果其中一个字段为空,我的下拉列表将显示一个完全为空的值。(例如,它不会“跳过”记录,而是显示一个空行。

即使我在一个或多个字段中有空值,如何让下拉菜单显示“完整客户端名称”?

4

1 回答 1

3
var fields = new [] { m.corpName, m.buName, m.divName, m.pgName, m.contactName }
                                .Where(s => s != null);
completeclientname = string.Join(" ", fields);

为了从 Linq-2-entity 切换到 Linq-2-objects,请使用AsEnumerable

var qryGetClients = db.clients.AsEnumerable()
                              .Select(m => new {
                                                 clientid = m.clientID,
                                                 corpName = m.corpName,
                                                 ...
                                                 completeclientname = ...
                                               })
                              .ToArray();
于 2012-11-09T16:05:09.280 回答