2012-08-24 15 views
6

मैंका उपयोग कर Linq करने वाली एसक्यूएल

public static FeedbackDatabaseDataContext context = new FeedbackDatabaseDataContext(); 
    public static bool Insert_Question_Answer(List<QuestionClass.Tabelfields> AllList) 
    { 
      Feedback f = new Feedback(); 
      List<Feedback> fadd = new List<Feedback>(); 
      for (int i = 0; i < AllList.Count; i++) 
      { 
       f.Email = AllList[i].Email; 
       f.QuestionID = AllList[i].QuestionID; 
       f.Answer = AllList[i].SelectedOption; 
       fadd.Add(f); 
      } 
      context.Feedbacks.InsertAllOnSubmit(fadd); 
      context.SubmitChanges(); 
     return true;    
    } 

SQL करने के लिए जब मैं यानी Fadd रिकॉर्ड है सूची वस्तु में रिकॉर्ड जोड़ने LINQ का उपयोग कर तालिका में एकाधिक पंक्तियाँ जोड़ना चाहते हैं एकाधिक रिकॉर्ड जोड़ें के अंतिम मूल्य के साथ अधिलेखित कर देता है AllList

उत्तर

15

मुझे पार्टी के लिए देर हो चुकी है, लेकिन मैंने सोचा कि आप जानना चाहेंगे कि फॉर-लूप अनावश्यक है। बेहतर उपयोग foreach (आपको सूचकांक की आवश्यकता नहीं है)।

यह भी दिलचस्प है जब आप LINQ (स्पष्टता के लिए नाम बदला विधि) का उपयोग हो जाता है:

public static void InsertFeedbacks(IEnumerable<QuestionClass.Tabelfields> allList) 
{ 
    var fadd = from field in allList 
       select new Feedback 
          { 
           Email = field.Email, 
           QuestionID = field.QuestionID, 
           Answer = field.SelectedOption 
          }; 
    context.Feedbacks.InsertAllOnSubmit(fadd); 
    context.SubmitChanges(); 
} 

वैसे, आप आप हर समय का उपयोग है कि एक डेटा संदर्भ नहीं रखना चाहिए; it's better to create one locally, एक उपयोग कथन के अंदर, जो डेटाबेस डिस्कनेक्शन को सही तरीके से संभाल देगा।

+0

एमएसडीएन मंच के लिए आपका लिंक वास्तव में कुछ हद तक आपके कथन का विरोध करता है। हां, आपको इसकी आवश्यकता होने पर अपने डेटा संदर्भ का निपटान करना चाहिए, लेकिन जब आप ऐसा करते हैं तो इसे रखें (जैसे _customer तालिका और आपके लिंक में ऑर्डर टेबल_ उदाहरण)। ऐसा करने का सही समय आपके कोड पर निर्भर करेगा, लेकिन एक वेब डेवलपर के रूप में मैं आमतौर पर वेब अनुरोध के अंत में निपटान करता हूं। – Trisped

11

आप पाश के लिए के दायरे में प्रतिक्रिया की वस्तु बनाने चाहिए, ताकि करने के लिए अपने-प्रक्रिया में परिवर्तन:

public static bool Insert_Question_Answer(List<QuestionClass.Tabelfields> AllList) 
{ 
     List<Feedback> fadd = new List<Feedback>(); 
     for (int i = 0; i < AllList.Count; i++) 
     { 
      Feedback f = new Feedback(); 
      f.Email = AllList[i].Email; 
      f.QuestionID = AllList[i].QuestionID; 
      f.Answer = AllList[i].SelectedOption; 
      fadd.Add(f); 
     } 
     context.Feedbacks.InsertAllOnSubmit(fadd); 
     context.SubmitChanges(); 
    return true;    
} 
+0

धन्यवाद योगराज गुप्ता। समस्या हल हो गई। –

+0

+1 - मेरा डुप्लिकेट हटाया गया – Habib

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