2011-02-16 24 views
6

मुझे लगता है कि यह सही शब्दावली है ...क्या अनाम प्रकार का उपयोग करके डेटाबेस करना संभव है?

असल में, मेरे पास दोहराव नियंत्रण है, और एक लिंक क्वेरी है जो कुछ आइटम पुनर्प्राप्त करती है। आम तौर पर मैं सीधे क्वेरी पर डाटाबेस करता हूं और परिणामों के साथ टेम्पलेट को पॉप्युलेट करने के लिए इवल का उपयोग करता हूं।

हालांकि, यह बिल्कुल सही प्रारूप में नहीं आता है - उदाहरण के लिए, यदि एंडडेट नल है (यह डेटटाइम है?) तो मैं इसे "वर्तमान" के साथ प्रतिस्थापित करना चाहता हूं। मैं क्वेरी परिणाम ऑब्जेक्ट्स में केवल कुछ गुणों का उपयोग कर रहा हूं।

मैं वहाँ की तरह एक समाधान है कि अगर सोच रहा हूँ:

[pseudo madeup code] 
var query = getResults(); 

List<anonymous> anonList = new List(); 

foreach (var q in query) 
{ 
    string myEndDate = ""; 
    if (q.EndDate.HasValue) 
     { myEndDate = q.EndDate.ToString(); } 
    else 
     { myEndDate = "Present"; } 

    anonList.items.add(new { name=q.name, enddate=myEndDate }; 
} 

repeater.Datasource = anonList; 
तो

<div><%#Eval("enddate")%></div> 

उत्तर

2

आपके पास दो ओ

  1. एक गैर सामान्य ArrayList, या
  2. का प्रयोग करें उपयोग Enumerable.Repeat, अर्थात्: आप घोषित करने के लिए ptions सूची उत्पन्न होती हैं। var anonList = Enumerable.Repeat(new { name="", enddate=""}, 0).ToList();
1

हाँ, आप गुमनाम प्रकार के खिलाफ बाँध लेकिन अपने कोड उन प्रकार के अनुक्रम उत्पन्न करने के लिए होगा कर सकते हैं थोड़ा सा बदलने के लिए:

repeater.DataSource 
    = getResults() 
     .Select(q => new { 
      name = q.name, 
      enddate = (q.EndDate.HasValue) 
         ? q.EndDate.ToString() 
         : "Present" 
     }); 
+0

वहाँ यह सब तर्क इनलाइन किया जा रहा बिना यह करने के लिए कोई तरीका है? यह इसे बहुत अपठनीय बना सकता है, खासकर यदि आप दो स्ट्रिंग्स को जोड़ रहे हैं जो शून्य हो सकते हैं, उदाहरण के लिए 'fullname = q.user.title + q.user.firstname + q.user.lastname;' यदि उपयोगकर्ता शून्य है तो यह असफल हो जाएगा , और तीन इनलाइन चेक करने के साथ-साथ उन्हें एक चर में जोड़ना बहुत ही घृणास्पद है। – NibblyPig

1

आप एंड्रयूज नमूना ले सकता है:

repeater.DataSource = getResults() 
    .Select(q => new { 
     name = q.name, 
     enddate = (q.EndDate.HasValue) 
        ? q.EndDate.ToString() 
        : "Present"  }); 

लेकिन इसके बजाय कंप्यूटिंग ENDDATE इनलाइन के लिए, आप एक समारोह फोन:

repeater.DataSource = getResults() 
    .Select(q => new { 
     name = q.name, 
     enddate = GetEndDate(q)}); 


    private void GetEndDate(TypeOfQ q) 
    { 
     return (q.EndDate.HasValue) ? q.EndDate.ToString() : "Present"; 
    } 

कि आप क्या जाहिर है ??

संबंध है, क्रिस

संबंधित मुद्दे

 संबंधित मुद्दे