.NET4.5 및 VS2013으로 작업 중이며 dynamic
db에서 결과 를 얻는 쿼리가 있습니다.
dynamic topAgents = this._dataContext.Sql(
"select t.create_user_id as \"User\", sum(t.netamount) as \"Amount\" from transactiondetail t where t.update_date > sysdate -7 group by t.create_user_id")
.QueryMany<dynamic>();
다음 문 Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type
은 실행을 허용하지 않고 컴파일 오류로 실패 합니다.
topAgents.ToList().Select(agent => new
{
User = agent.User != null ? string.Format("{0}", agent.User).Replace("CORPNTGB\\", "") : null,
Amount = agent.Amount
});
이것은 foreach
잘 작동 하는 동안 .
var data = new List<List<object>>();
foreach (dynamic agent in topAgents)
{
data.Add(new List<object>
{
agent.User != null ? string.Format("{0}", agent.User).Replace("CORPNTGB\\", "") : null,
agent.Amount
});
}
내 눈에는 topAgents.ToList()
그것들이 동등하게 해석 될 수 있었는데, var data = new List<List<object>>();
두 번째 명령문이 컴파일러에 의해 허용 된다는 것을 명시 적으로 명시했기 때문 입니까?
컴파일러가 LINQ 선택을 허용하지 않는 이유는 무엇입니까?
topAgents
해야dynamic
?var
대신 사용하면 작동합니까 ?