2017-02-20 19 views
1

Я пишу код, используя LINQ в C#. Код работает исправно, но когда я пытаюсь пройти тестирование, я не получил значения, как в отсутствии данных, и я знаю, является ли идентификатор нулевым или пустым, он пропустит запрос LINQ. Как я могу установить значение результата запроса в нулевую или пустую строку, если запрос LINQ был пропущен?Как проверить, является ли «id» пустым или пустым, а значения по умолчанию - 0 или пустая строка?

var Rs1 = _context.DwPropertyDetails.Where(x => x.LandId == id && x.TransactionPrice != null) 
        .Select(x => new 
        { 
         Studio = x.FlatType.ToLower() == studio.ToLower() ? x.TransactionPrice : 0, 
         OneBedroom = x.FlatType.ToLower() == onebedroom.ToLower() ? x.TransactionPrice : 0, 
         TwoBedroom = x.FlatType.ToLower() == twobedroom.ToLower() ? x.TransactionPrice : 0, 
         ThreeBedroom = x.FlatType.ToLower() == threebedroom.ToLower() ? x.TransactionPrice : 0, 
         Total = x.TransactionPrice 
        }).Select(a => new 
        { 
         a.Studio, 
         a.OneBedroom, 
         a.TwoBedroom, 
         a.ThreeBedroom, 
         a.Total, 
         Dummy = "x" 
        }).GroupBy(a => new { a.Dummy }) 
        .Select(g => new 
        { 
         Rs1Clm2 = totalTransAmount, 
         Rs1Clm3 = g.Sum(p => p.Studio), 
         Rs1Clm4 = g.Sum(p => p.OneBedroom), 
         Rs1Clm5 = g.Sum(p => p.TwoBedroom), 
         Rs1Clm6 = g.Sum(p => p.ThreeBedroom), 
         Rs1Clm7 = g.Sum(p => p.Total), 
        }); 

хорошо я попробовать его в представлении

<tbody> 
      @if (Model == null || string.IsNullOrEmpty(Model.Rs1Vms.ToString()) || string.IsNullOrWhiteSpace(Model.Rs1Vms.ToString())) 
      { 
       <tr> 
        <td>Total Transaction Amount</td> 
        <td>0</td> 
        <td>0</td> 
        <td>0</td> 
        <td>0</td> 
        <td>0</td> 
       </tr> 
      } 
      else 
      { 
       foreach (var a in Model.Rs1Vms) 
       { 
        <tr> 
         <td>@Html.DisplayFor(model => a.Rs1Vm2)</td> 
         <td>@($"{a.Rs1Vm3:N0}")</td> 
         <td>@($"{a.Rs1Vm4:N0}")</td> 
         <td>@($"{a.Rs1Vm5:N0}")</td> 
         <td>@($"{a.Rs1Vm6:N0}")</td> 
         <td>@($"{a.Rs1Vm7:N0}")</td> 
        </tr> 
       } 
      } 
     </tbody> 
+0

Не работает. –

ответ

0

Вы можете использовать DefaultIfEmpty для выполнения этой задачи.

var Rs2 = Rs1.DefaultIfEmpty(new 
        { 
         Rs1Clm2 = 0, 
         Rs1Clm3 = 0, 
         Rs1Clm4 = 0, 
         Rs1Clm5 = 0, 
         Rs1Clm6 = 0, 
         Rs1Clm7 = 0, 
        }); 
+0

Я стараюсь это раньше. Но как насчет зрения? –