現時点では、データ型について少し迷っています。
私が構築しているアプリケーションには、Array
顧客 ID に応じてクエリを実行する関数があります。
データは、ID の文字列から形成された配列を使用して、特定の条件で上書きする必要があります。
問題は、Split()
関数が a を返すのstring[]
に対し、私のデータはArray
. 以下に示すように、新しい値を に割り当てることはdata
できますが、データにアクセスできなくなります。
これは、 aArray
には を使用する必要data.GetValue(i)
があるのに対し、 astring[]
は でしかアクセスできないためdata[i]
です。
簡素化されたコード:
internal void GetData(Array data) {
string ids == "123,456,789";
if(condition){
data = (Array) ids.Split(',').ToArray(); // Trying to convert it to a Array, can't figure it out...
}
// Accessing the data at index `i`
data.GetValue(i); // Default case, works when the condition is false
data[i]; // This only works when the condition is true
}
だから、私の質問は、分割文字列を aArray
ではなくa に保存する方法はありstring[]
ますか?
完全なコード:
internal M.RequestCustomQueryResultsList GetData(Array data) {
M.RequestCustomQueryResultsList result = new M.RequestCustomQueryResultsList();
result.CustomQueryResults = new List<CustomQueryResult>();
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
conn.Open();
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.CommandText = queriesQuery; // StacOverflow: A query to obtain some queries
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read()) {
// For each query
SqlConnection conn1 = new SqlConnection(connectionString);
conn1.Open();
/* StackOverflow: The real relevant stuff starts here. */
String query = reader["Query"].ToString(); // Get the current query
Match match = Regex.Match(query, @"{((?:\w,?)*)}");
if(match.Success) { // If the query contains "{0}" or "{123,456,789,etc}"
string m = match.Groups[1].Value; // get the value in the "{}"
if(!m.Equals("0")){ // If that value isn't "123,456,etc"
data = m.Split(','); // Split up the id's into an array.
}
for(int i = 0; i < data.Length; i++) { // Loop through the data (Works if m.Equals("0"))
// Execute the query for every company.
String q = string.Format(query, data.GetValue(i).ToString()); // Fails
CustomQueryResult c = new CustomQueryResult();
c.CustNo = int.Parse(data.GetValue(i).ToString()); // Fails
// Here I set some more values to c, add c to `result`, and close all loops / etc.
GetData
GetCustomQueriesResults
サービスへのリクエストとして呼び出されるの一部です。
public T.RequestCustomQueryResultsList GetCustomQueriesResults(Array data) {
var CustomQueriesResultsList = new S.CustomQueriesResultsList(data);
return CustomQueriesResultsList.GetData(data);
}
次のように、JavaScript からサービスを呼び出します。
repo.GetCustomQueriesResults([123,456,789]);
JSON.stringify(data)
リポジトリは、パラメーターとして使用する ajax リクエストを作成しdata
ます。