對不起,很難爲疑問選擇一個好標題。對象數組中的LINQ查詢數據庫內部列字符串
我在使用LINQ查詢名爲「參數」的特定列字符串,它具有';'分離器。數據庫列是一個模式,如「name1 = value1; name2 = value2; name3 = value3」,我可以將其轉換爲名爲的對象GenericParameter []將字符串分割爲';'。
與參數處理我的GenericParameter類看起來是這樣的:
public class GenericParameter
{
public string Name {get; set;} //name1
public string Value {get; set;}//value1
public static GenericParameter[] GetParameters(string parameters)
{
List<GenericParameter> chargingParameterList = new List<GenericParameter>();
if (!string.IsNullOrEmpty(parameters))
{
string[] splitedChargingParameter = parameters.Trim().Split(';');
foreach (string parameter in splitedChargingParameter)
{
string[] pair = parameter.Split('=');
if (pair.Length != 2) continue;
GenericParameter genericParameter = new GenericParameter()
{
Name = pair[0].Trim(),
Value = pair[1].Trim()
};
chargingParameterList.Add(genericParameter);
}
}
return chargingParameterList.ToArray();
}
}
的方法,現在我的工作看起來像這樣:
public ICollection<MyData> GetMyDataByParameter(string param)
{
//param="name1=value1;name2=value2"
List<MyData> dataToReturn = context
.MyDataRepository
.AsQueryable()
.Where(p => p.ParameterStr.Contains(param))
.ToList();
return dataToReturn;
}
我重構它,因爲在這個方式我的「參數」可以通過不同的命令,如「名稱2 =值2;名稱1 =值1」並可能不匹配數據庫列參數所有的時間。
我試圖做這樣的事情:
public ICollection<MyData> GetMyDataByParameter(string param)
{
GenericParameter[] receivedParamArray = GenericParameter.GetParameters(param);
//param="name1=value1;name2=value2"
//GenericParameter[0].Name is "name1"
//GenericParameter[0].Value is "value1"
// TODO: QUERY the records on repository that matchs all the
//receivedParamArray
List<MyData> dataToReturn = context
.AsQueryable()
//.Where(p => p.ParameterStr.Contains(receivedParamArray))
.ToList();
return dataToReturn;
}
我怎樣才能查詢庫列參數(字符串)是配襯所有receivedParamArray。由註釋表示的查詢將無法工作。
請,我欣賞任何建議。
首先,擺脫你的GenericParameter類和使用'詞典<字符串,字符串>'。不需要再次重新發明輪子。 –