2009-12-12 55 views
0

什麼是這個速記或我不應該這樣做? 我打電話檢查方法嗎?有條件新對象分配?

bool assign=value; 
objectsList = from o in objects select new { 
           id=o.id, 
           name=o.name or "" (if assign==false), 

           } 

回答

1
bool assign=value; 
var objectsList = from o in objects select new 
        { 
         id = o.id, 
         name = assign ? o.name : String.Empty 
        }; 
3

你的意思是這樣的:

bool assign=value; 
var objectsList = from o in objects select new { 
    id=o.id, 
    name=(assign ? o.name : String.Empty) 
}; 

PS:警惕延遲執行的 - 檢查分配在你使用它,而不是點在聲明SELECT語句會發生。

+0

好點,但你可以更一般。無論「對象」是否爲IQueryable,都會使用該檢查。 「objectsList」只是一個表示查詢的對象;它不會執行,直到你做了一些讓它運行的東西。因此,在投影期間執行檢查將始終發生,使用當時在「分配」中發生的任何值。 – 2009-12-12 16:24:07

+0

即使IEnumerable執行Select,我也沒有意識到發生了這種情況。我做了一些測試,你肯定是對的。感謝您的高舉。 – fyjham 2009-12-13 00:18:18