2011-02-28 14 views
7

public class Abbreviation 
{ 
    public string ShortName { get; set; } 
    public string LongName { get; set; } 
} 

मैं इस तरह संक्षिप्त वस्तुओं की एक सूची है:स्ट्रिंग सी # में Linq का उपयोग कर की जगह


List abbreviations = new List(); 
abbreviations.add(new Abbreviation() {ShortName = "exp.", LongName = "expression"}); 
abbreviations.add(new Abbreviation() {ShortName = "para.", LongName = "paragraph"}); 
abbreviations.add(new Abbreviation() {ShortName = "ans.", LongName = "answer"}); 

string test = "this is a test exp. in a para. contains ans. for a question"; 

string result = test.Replace("exp.", "expression") 
... 

मैं परिणाम होने की उम्मीद: "यह एक पैरा में एक परीक्षण अभिव्यक्ति है एक के लिए इस सवाल का जवाब होता है सवाल "

वर्तमान में मैं कर रहा हूँ:


foreach (Abbreviation abbreviation in abbreviations) 
{ 
    test = test.Replace(abbreviation.ShortName, abbreviation.LongName); 
} 
result = test; 

अगर वहाँ डब्ल्यू एक बेहतर है सोच एंक लिंक और रेगेक्स के संयोजन का उपयोग कर।

+3

LINQ हर समस्या का समाधान नहीं है , आपने जो लिखा है वह ठीक है। – Phill

उत्तर

9

तुम सच में अपने कोड को छोटा करना चाहता था, तो आप List पर ForEach विस्तार विधि का उपयोग कर सकते हैं:

abbreviations.ForEach(x=> test=test.Replace(x.ShortName, x.LongName)); 
+4

तकनीकी रूप से यह LINQ नहीं है ;-) – BrokenGlass

+1

तकनीकी रूप से यह कार्यात्मक प्रोग्रामिंग नहीं है - http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx – RPM1984

+0

मुझे पता था जो सामान्य रूप से मैं करता हूं उससे हमेशा बेहतर तरीका होता है। यह बहुत अच्छा काम करता है। आप और माइक के लिए धन्यवाद। – gangt

2

आप foreach विधि का उपयोग कर सकते हैं। इसके अलावा, एक StringBuilder अपने स्ट्रिंग पर कार्रवाई और अधिक कुशल बनाने चाहिए:

var test = new StringBuilder("this is a test exp. in a para. contains ans. for a question"); 
abbreviations.ForEach(abb => test = test.Replace(abb.ShortName, abb.LongName)); 
return test.ToString(); 
1

प्रयास करें यह एक

TestList.ForEach(x => x.TestType.Replace("", "DataNotAvailable")); 

या नीचे

foreach (TestModel item in TestList.Where(x => x.ID == "")) 
{ 
    item.ID = "NoDataAvailable"; 
} 
संबंधित मुद्दे