linq ..忽略下拉c#的nulls

  • 本文关键字:nulls linq linq null
  • 更新时间 :
  • 英文 :


我有一个简单的linq查询,可以返回一组客户。客户由五个字段组成,其中一些字段可能是无效的。

公司,业务部门,部门,产品组,联系人

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

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

较小的客户可能是:

鲍勃的早餐角 - 零-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

但是,如果其中一个字段为null,则我的下拉列表显示完全无效的值。(就像,它不会"跳过"记录,它显示一个空行。

即使我在一个或多个字段中有零值,我如何获得下拉列表以显示" pounteclientname"?

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();

相关内容

  • 没有找到相关文章

最新更新