문제

I try to do the following join :

var collection = from t1 in dt1.AsEnumerable()
                 join t2 in dt2.AsEnumerable()
                 on  new { 
                     t1.["main_code"], 
                     t1["year"]} 
                     equals new { 
                         t2["dep_code"], 
                         t2["dep_year"] }
                         select new { 
                             emp_name = t1["name"], 
                             bonus_desc = t1["bonus_desc"],
                             dep_name = t2["dep_name"] };

but I face the following build error!!

invalid anonymous type member declarator

도움이 되었습니까?

해결책

Name properties of anonymous type of join :

var collection = from t1 in dt1.AsEnumerable()
                 join t2 in dt2.AsEnumerable()
                 on  new { PropertyA= t1["main_code"], PropertyB=t1["year"]} equals new { PropertyA=t2["dep_code"], PropertyB=t2["dep_year"] }
                 select new { emp_name = t1["name"], bonus_desc = t1["bonus_desc"],dep_name = t2["dep_name"] };

다른 팁

You need to explicitely name your properties, for example:

var collection = 
    from t1 in dt1.AsEnumerable()
    join t2 in dt2.AsEnumerable()
    on new { code = t1["main_code"], year = t1["year"] } equals 
       new { code = t2["dep_code"], year = t2["dep_year"] }
    select new { emp_name = t1["name"], bonus_desc = t1["bonus_desc"] /* ... */};

Use:

var collection = from t1 in dt1.AsEnumerable()
                 join t2 in dt2.AsEnumerable()
                 on  new { field1 = t1.["main_code"], field2 = t1["year"]} equals new { field1 = t2["dep_code"], field2 = t2["dep_year"] }
                 select new { emp_name = t1["name"], bonus_desc = t1["bonus_desc"],dep_name = t2["dep_name"] };
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top