2

顧客のグループを返す単純な linq クエリがあります。顧客は 5 つのフィールドで構成されており、そのうちのいくつかは null である可能性があります。

コーポレーション、ビジネスユニット、部門、製品グループ、連絡先

大企業の顧客は、5 つのフィールドすべてに値を持っている可能性があります (以下は架空のものです!)。

Microsoft - Windows - 開発者グループ - スタート メニュー チーム - Bob Jones

小規模な顧客は次のようになります。

Bob's Breakfast Nook - NULL - NULL - NULL - ボブ・ジョーンズ

したがって、すべての顧客を一覧表示するドロップダウンがあります。

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

これで、クエリでこれを実行して、フィールドを 1 つのフィールドに連結できることがわかりました。

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

しかし、これらのフィールドのいずれかが null の場合、ドロップダウンには完全に null 値が表示されます。(同様に、レコードを「スキップ」せず、空の行を表示します。

1 つ以上のフィールドに null 値がある場合でも、ドロップダウンに「completeclientname」を表示するにはどうすればよいですか?

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 に答える