【问题标题】:How to set default empty in query如何在查询中设置默认为空
【发布时间】:2012-06-21 12:49:22
【问题描述】:

所以我有这个查询:

   var list = (from x in xList 
                 join a in AList on x.commonfield equals a.commonfield
                 join b in BList on x.newCommonField equals b.newCommonField
                 from c in Clist.Where(p=>p.connectorID==x.connectorID).DefaultifEmpty()
                                select new { x, a.DesiredFieldFromA, b.DesiredFieldFromB,c.name}).ToList();

    list.ForEach(el =>
                    {
                        el.x.DesiredFieldFromA= el.DesiredFieldFromA;
                        el.x.DesiredFieldFromB= el.DesiredFieldFromB ;
                        el.x.Name=el.name;
                    });
    return list.Select(p=>p.x);

当我这样做时:

select new { x, a.DesiredFieldFromA, b.DesiredFieldFromB,c.name}).ToList();

问题#1:我如何告诉它它仍然应该向我显示记录...但是如果 name 字段为空,则放置 string.empty。
顺带一提:

select new { x, a.DesiredFieldFromA, b.DesiredFieldFromB,c.name??string.Empty}).ToList();

问题#2:我怎么能告诉它即使“connectorID”为空.. 我仍然需要它来显示 x 记录
提前致谢!

#1 和#2 的解决方案如下:

from c in Clist.Where(p=>p.connectorID==x.connectorID).DefaultifEmpty()
                                select new { x, a.DesiredFieldFromA, b.DesiredFieldFromB,name= (c==null) ?"Not Defined": c.name}).ToList();

【问题讨论】:

  • 对于问题 #2,您是否正在寻找类似于 LEFT OUTER JOIN 的内容?
  • 是的...但是使用它给了我很多重复的具有 connectorID =null 的记录。我正在为修复自动取款机工作。 :) 谢谢

标签: asp.net-mvc-3 linq linq-to-sql


【解决方案1】:

对于问题 #2,更改:

from c in Clist.Where(p=>p.connectorID==x.connectorID).DefaultidEmpty()

到:

from c in Clist.Where(p=>p.connectorID==x.connectorID || x.connectorID == null)

【讨论】:

  • 谢谢你的回答。至于我决定接受这个答案,我实际上掷硬币,你输了。但为了你的荣誉,我会通过听 JohnnYGold 来提高我的同性恋计量器:@987654321再次@!
  • 没问题,@Noobsyke。郑重声明,那个视频里不是我 ;)
【解决方案2】:

对于问题 #1,试试这个:

select new { 
    x, 
    a.DesiredFieldFromA, 
    b.DesiredFieldFromB, 
    name = c.name ?? string.Empty
}).ToList();

您需要指定名称“name”,以便您可以使用表达式来分配它。

关于问题 #2,请参阅jonnyGold's answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    相关资源
    最近更新 更多