where
स्थिति कोई परिणाम नहीं देता है तो लौटाए गए संग्रह में डिफ़ॉल्ट मान कैसे डालें?linq का चयन करने के लिए डिफ़ॉल्ट मान अगर आइटम कुछ भी वापस नहीं किया गया है
from i in data.collection
where i.Type == type
select i.Count
where
स्थिति कोई परिणाम नहीं देता है तो लौटाए गए संग्रह में डिफ़ॉल्ट मान कैसे डालें?linq का चयन करने के लिए डिफ़ॉल्ट मान अगर आइटम कुछ भी वापस नहीं किया गया है
from i in data.collection
where i.Type == type
select i.Count
ऐसा करने के लिए Enumerable.DefaultIfEmpty
विधि का उपयोग करें।
उदाहरण (विधि वाक्य रचना में, क्योंकि यह IMHO कम अजीब है):
data.collection.Where(i => i.Type == type)
.DefaultIfEmpty(defaultObject)
.Select(i => i.Count);
आप DefaultIfEmpty
के लिए देख रहे हैं।
var itemCounts = from i in data.collection
where i.Type == type
select i.Count;
var itemCountsOrMinusOne = itemCounts.DefaultIfEmpty(-1);
पहले आप आइटम गणना दे देंगे, या एक IEnumerable
कि कोई तत्व देता है।
दूसरा आपको आइटम गणना, या IEnuemrable
देता है जो केवल -1
देता है।
DefaultIfEmpty() विधि है।
विधि वाक्य रचना में, आप इसे इस तरह उपयोग कर सकते हैं: Where
फिल्टर कोई आइटम नहीं, एक एक आइटम yourDefaultValue
साथ गणनीय Select
प्रक्षेपण के लिए एक इनपुट के रूप में इस्तेमाल किया जाता है देता है
data.Collection
.Where(i => i.Type == type)
.DefaultIfEmpty(yourDefaultValue)
.Select(i => i.Count);
हैं।
आपको डिफ़ॉल्ट आइटम की आवश्यकता क्यों है? एक खाली संग्रह यहां समझ में आता है। – Rawling
मुझे प्रत्येक लौटे हुए खाली परिणाम –
के लिए '0' प्राप्त करने की आवश्यकता है मुझे राउलिंग से सहमत होना है ... शून्य गणना का अनुक्रम यहां स्पष्ट उम्मीदवार होगा, जब तक कि यह किसी भी तरह से –