नहीं, आपको सभी संभावित संयोजनों के लिए कुछ विशेष कार्यों की आवश्यकता नहीं है। इसके अलावा, यह वास्तव में कार्यों की बड़ी संख्या होगी।
आप बस कुछ शर्त निर्दिष्ट करने के लिए जांच सकते हैं और इस स्थिति को जोड़ सकते हैं।
कुछ इस तरह:
public YourEntity[] Search(string name = "", int? age = null, bool? isActive = null)
{
string query = "SELECT * FROM YourEntities";
List<string> whereConditions = new List<string>();
if (!string.IsNullOrWhiteSpace(name))
{
whereConditions.Add($"name LIKE '%{name}%'");
}
if (age.HasValue)
{
whereConditions.Add($"age = {age.Value}");
}
if (isActive.HasValue)
{
whereConditions.Add($"isActive = {isActive.Value:D}");
}
if (whereConditions.Any())
{
query += "WHERE " + string.Join(" AND ", whereConditions);
}
return someSqlExecutorAndProcessor(query);
}
उसके बाद, आप इस तरह इस विधि का उपयोग कर सकते हैं:
var results = Search(); // all
var results = Search("name"); // name only
var results = Search(age: 17); // age only
var results = Search("name", isActive: true); // name and isActive
महत्वपूर्ण नोट: नोट इस कोड को स्ट्रिंग संयोजन का उपयोग करता है SQL क्वेरी का निर्माण करने और ऐसा नहीं है कि सुरक्षित, सामान्य विचार प्रदान करने के लिए यह केवल एक न्यूनतम उदाहरण है। मुझे नहीं पता कि आप डेटाबेस के साथ काम करने के लिए क्या उपयोग करते हैं। इसके बजाय parametrized प्रश्न या ORM का प्रयोग करें।
उदाहरण के लिए, यदि आप इकाई की रूपरेखा का उपयोग करें, इसे इस तरह दिखेगा:
public YourEntity[] Search(string name = "", int? age = null, bool? isActive = null)
{
IQueryable<YourEntity> entities = dbContext.Set<YourEntity>();
if (!string.IsNullOrWhiteSpace(name))
{
entities = entities.Where(x => x.Name.Contains(name));
}
if (age.HasValue)
{
entities = entities.Where(x => x.Age == age.Value);
}
if (isActive.HasValue)
{
entities = entities.Where(x => x.IsActive == isActive.Value);
}
return entities.ToArray();
}
स्रोत
2017-05-02 04:09:48
आप एसक्यूएल में खोजें प्रक्रिया की दुकान और इसे से सी # –
कॉल कर सकते हैं क्या आप इकाई फ्रेमवर्क का उपयोग कर सकते हैं? –
@ एस पेट्रोसोव क्या आप थोड़ा और विस्तार कर सकते हैं? –