मैं निम्नलिखित सी # कोड लिखा है:मेरे लैम्ब्डा अभिव्यक्तियों को जल्दी मूल्यांकन करने के लिए कैसे मजबूर करें? लैम्ब्डा अभिव्यक्ति अजीबता को ठीक करें?
_locationsByRegion = new Dictionary<string, IEnumerable<string>>();
foreach (string regionId in regionIds)
{
IEnumerable<string> locationIds = Locations
.Where(location => location.regionId.ToUpper() == regionId.ToUpper())
.Select(location => location.LocationId); //If I cast to an array here, it works.
_locationsByRegion.Add(regionId, LocationIdsIds);
}
इस कोड कुंजी और मूल्यों के रूप में "स्थान आईडी" की सूची के रूप में मेरे "क्षेत्र आईडी" के साथ एक एक शब्दकोश बनाने के लिए है।
हालांकि, वास्तव में क्या होता है कि मुझे "क्षेत्र आईडी" के साथ कुंजी के रूप में एक शब्दकोश मिलता है, लेकिन प्रत्येक कुंजी के लिए मान समान है: यह क्षेत्र आईडी में अंतिम क्षेत्र आईडी के लिए स्थानों की सूची है!
ऐसा लगता है कि यह लैम्बडा अभिव्यक्तियों का मूल्यांकन कैसे किया जाता है इसका एक उत्पाद है। मैं एक सरणी में स्थान आईडी की सूची कास्टिंग करके सही परिणाम प्राप्त कर सकता हूं, लेकिन यह एक क्लज की तरह लगता है।
इस स्थिति को संभालने के लिए एक अच्छा अभ्यास क्या है?
नहीं, यह एक पक्ष उत्पाद है - एक समय में बेहद उपयोगी पक्ष उत्पाद: इसके अलावा इस क्वेरी निष्पादित नहीं किया जाएगा जब तक आप, परिणाम तक पहुँचने का प्रयास या जब तक आप इसे शब्दकोश में बदलने का। – delnan
एक तरफ ध्यान दें: आप या तो [Enumerable.Zip] (https://msdn.microsoft.com/en-us/library/dd267698 (v = vs.110) .aspx) या [गणना करने योग्य) को देखना चाहते हैं। ToDictionary] (https://msdn.microsoft.com/en-us/library/bb548657 (v = vs.110) .aspx) अपने लूप से छुटकारा पाने के लिए। –