当前位置:  开发笔记 > 编程语言 > 正文

如果在LINQ中有其他

如何解决《如果在LINQ中有其他》经验,为你挑选了2个好方法。

是否可以在LINQ查询中使用If Else条件?

就像是

from p in db.products
if p.price>0
select new
{
  Owner=from q in db.Users
        select q.Name
}
else
select new
{
   Owner = from r in db.ExternalUsers
            select r.Name
}

Richard Ever.. 61

这可能有用......

from p in db.products
    select new
    {
        Owner = (p.price > 0 ?
            from q in db.Users select q.Name :
            from r in db.ExternalUsers select r.Name)
    }

看看它是否有效会很有趣......如果确实如此,我很乐意看到TSQL(假设它确实需要加载;对于延迟加载,可能不会太糟糕). (2认同)


Marc Gravell.. 8

我假设db这是LINQ-to-SQL/Entity Framework /类似(不是LINQ-to-Objects);

一般来说,你使用条件语法(a?b:c)做得更好 - 但是,我不知道它是否适用于你的不同查询(毕竟,你如何编写TSQL?).

对于你可以做的事情类型的简单例子:

select new {p.PriceID, Type = p.Price > 0 ? "debit" : "credit" };

你可以做更多更丰富的事情,但我真的怀疑你可以选择有条件的表格.当然,欢迎你试试......



1> Richard Ever..:

这可能有用......

from p in db.products
    select new
    {
        Owner = (p.price > 0 ?
            from q in db.Users select q.Name :
            from r in db.ExternalUsers select r.Name)
    }


看看它是否有效会很有趣......如果确实如此,我很乐意看到TSQL(假设它确实需要加载;对于延迟加载,可能不会太糟糕).

2> Marc Gravell..:

我假设db这是LINQ-to-SQL/Entity Framework /类似(不是LINQ-to-Objects);

一般来说,你使用条件语法(a?b:c)做得更好 - 但是,我不知道它是否适用于你的不同查询(毕竟,你如何编写TSQL?).

对于你可以做的事情类型的简单例子:

select new {p.PriceID, Type = p.Price > 0 ? "debit" : "credit" };

你可以做更多更丰富的事情,但我真的怀疑你可以选择有条件的表格.当然,欢迎你试试......

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有