अगर skill2
फ़ील्ड प्रकार का है Char\VarChar2\NChar
आदि। हमें गणना . करना होगा रिकॉर्ड उदा.
using (MySqlConnection cons = new MySqlConnection(MyConString)) {
cons.Open();
string query =
@"SELECT DISTINCT(skill2) AS skills
FROM agentdetails";
using (new MySqlCommand(query, cons)) {
using (var reader = command.ExecuteReader()) {
// collection to store skills
HashSet<string> hs = new HashSet<string>();
// Enumerate all records
while (reader.Read())
hs.Add(Convert.ToString(reader[0])); // and add them into a collection
// join collection into string
string skills = string.Join(",", hs.Select(item => $"'{item}'"));
//TODO: put relevant code here (e.g. return skills)
}
}
}
संपादित करें: $"..."
एक स्ट्रिंग इंटरपोलेशन है , यदि आप c# / .Net के ईलियर संस्करण का उपयोग करते हैं जो समर्थन नहीं करता यह (नीचे टिप्पणी देखें) आप कोशिश कर सकते हैं string.Format
इसके बजाय:
string skills = string.Join(",", hs.Select(item => string.Format("'{0}'", item)));
2 संपादित करें: हार्डकोडनहीं करें क्वेरी, लेकिन parametrize उन्हें; अफसोस, आप किसी संग्रह को IN
. में पास नहीं कर सकते एकल पैरामीटर के रूप में:
using (MySqlConnection con2 = new MySqlConnection(MyConString)) {
con2.Open();
string hcount =
string.Format( @"SELECT SUM(headCount) AS THC,
date AS date1
FROM setshrinkage
WHERE skill IN ({0})
AND date BETWEEN @today1 AND @today2
GROUP BY date", skill);
using(MySqlCommand cmd2 = new MySqlCommand(hcount, con2)) {
//TODO: provide actual RDBMS type - Add(...) instead of AddWithValue(...)
cmd2.Parameters.AddWithValue("@today1", today1);
cmd2.Parameters.AddWithValue("@today2", today2);
using (MySqlDataReader myread2 = cmd2.ExecuteReader()) {
while (myread2.Read()) {
//TODO: provide relevant code here
}
}
}
}