Состояние в linq выберите - PullRequest
0 голосов
/ 19 апреля 2020

у меня есть внутреннее соединение linq между двумя таблицами, которое будет выглядеть примерно так:

(from A in table1 join B in table2 
on   A.name equals B.name 
where {some condition}
select new { 
A.name ,
A.color,
.
.
.
}).toList();

проблема в том, что в некоторых записях "name" равно null и я хочу, чтобы запрос linq заменил null на "" в выбранной части.

примерно так:

select new {
A.name!=null?A.name : " "
.
.
.
}

как я могу это сделать?

(я знаю, что могу иметь условие в , где я проверяю, чтобы не быть null , но в этом случае он пропустит эту запись, но я хочу взять ее и заменить null имя со строкой)

заранее спасибо;)

Ответы [ 2 ]

4 голосов
/ 19 апреля 2020

Вы можете использовать оператор объединения нулей ?? с пустой строкой в ​​качестве значения по умолчанию. Затем присвойте его результат свойству анонимного типа

select new { 
    name = A.name ?? "",
    //rest of code
}
3 голосов
/ 19 апреля 2020

Образец

using System;
using System.Linq;
using System.Collections.Generic;


public class Program
{
    public static void Main()
    {
        // Student collection
        IList<Student> studentList = new List<Student>() { 
                new Student() { StudentID = 1, StudentName = null, Age = 13} ,
                new Student() { StudentID = 2, StudentName = "Moin",  Age = 21 } ,
                new Student() { StudentID = 3, StudentName = "Bill",  Age = 18 } ,
                new Student() { StudentID = 4, StudentName = "Ram" , Age = 20} ,
                new Student() { StudentID = 5, StudentName = "Ron" , Age = 15 } 
            };

        // LINQ Query Syntax to find out teenager students
        var teenAgerStudent = (from s in studentList
                              where s.Age > 12 && s.Age < 20
                              select new {Name=s.StudentName??"Tuna"}).ToList();

        Console.WriteLine("Teen age Students:");

        foreach(var std in teenAgerStudent){            
            Console.WriteLine(std.Name);
        }
    }
}

public class Student{

    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public int Age { get; set; }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...