如果在LINQ中有其他

Gra*_*ton 39 c# linq linq-to-sql

是否可以在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
}
Run Code Online (Sandbox Code Playgroud)

Ric*_*ett 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)
    }
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ell 8

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

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

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

select new {p.PriceID, Type = p.Price > 0 ? "debit" : "credit" };
Run Code Online (Sandbox Code Playgroud)

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