데이터베이스의 행에 일련의 매개 변수가 저장되어 있는데 두 입력 매개 변수를 모두 충족하는 행을 반환하고 싶습니다. "& msg_type = 20560 & status = 101"& msgstype = 101 "Iqueryable 교차가 두 번 적용될 때 오류가 발생합니다
매개 변수가 하나 뿐인 경우에만 정상적으로 작동하는 코드가 있습니다. 두 개가 있으면 결과가 비워집니다. 그들은 디버거를 진행하면서,
IQueryable<long> sol_params = (from param in db.kb_solution_param_list
select param.solution_id).Distinct();
foreach (String key in Request.QueryString.Keys)
{
String val = Request.QueryString[key];
IEnumerable<long> sols = from param in db.kb_solution_param_list
where param.parameter_name == key && param.value == val
select param.solution_id;
sol_params = sol_params.Intersect(sols);
}
그리고 여기에 변수의 상태입니다 :
Initial:
sol_params:
[250 , 251 , 252 , 253 , 254 , 255 , 256 , 257 , 258 , 259 , 260 , 261 , 262 , 263 , 264 , 265 , 307 , 332 , 336]
Foreach Loop:
key: msg_type val: 20560
sols:
[250 , 251]
sol_params:
[250 , 251]
key: status val: 101
sols:
[250 , 252 , 253 , 254 , 255 , 256 , 257 , 258 , 259 , 260 , 261 , 262 , 263 , 265 , 266 , 267 , 268 , 269 , 270 , 271 , 272]
sol_params:
[]
내가 기대된다 출력 sol_params입니다 : 여기에 내 코드입니다 [250]
암 나는 바보 같은 것을 놓친다? 방식은 암시 적 람다 표현식에서 변수를 캡처하고 있기 때문에