是否有可能在LINQ查詢中使用If Else條件?如果否則在LINQ
喜歡的東西
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
}
是否有可能在LINQ查詢中使用If Else條件?如果否則在LINQ
喜歡的東西
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
}
這可能會實現...
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)
}
我從db
假設這是LINQ到SQL /實體框架/相似(未LINQ到對象);
通常情況下,你使用條件語法(a?b:c)做得更好 - 但是,我不知道它是否適用於你的不同查詢(畢竟,你會如何編寫TSQL?) 。
對於事情的類型的一個簡單的例子,你可以做:
select new {p.PriceID, Type = p.Price > 0 ? "debit" : "credit" };
你可以做更豐富的東西,但我真的懷疑你可以挑選表在有條件的。歡迎你來試試,當然...上面
答案是不適合複雜的LINQ表達式。 所有你需要的是:
// set up the "main query"
var test = from p in _db.test select _db.test;
// if str1 is not null, add a where-condition
if(str1 != null)
{
test = test.Where(p => p.test == str);
}
你應該改變這樣的:
private string getValue(float price)
{
if(price >0)
return "debit";
return "credit";
}
//Get value like this
select new {p.PriceID, Type = getValue(p.Price)};
我的例子:
companyNamesFirst = this.model.CustomerDisplayList.Where(a => a.CompanyFirst != null ? a.CompanyFirst.StartsWith(typedChars.ToLower())) : false).Select(b => b.CompanyFirst).Distinct().ToList();
這將是有趣的,看看是否能工程...如果它確實,我很想看到TSQL(假設它急於加載;對於延遲加載,可能不會太糟糕)。 – 2009-01-14 14:12:48