Как различить два одинаковых поля в таблицах соединений Linq - PullRequest
0 голосов
/ 14 июня 2010

Как различить два новых поля, например, Описание

c.Description и lt.Description

    DataTable lDt = new DataTable();
    try
    {

        lDt.Columns.Add(new DataColumn("AreaTypeID", typeof(Int32)));
        lDt.Columns.Add(new DataColumn("CategoryRef", typeof(Int32)));
        lDt.Columns.Add(new DataColumn("Description", typeof(String)));
        lDt.Columns.Add(new DataColumn("CatDescription", typeof(String)));

        EzEagleDBDataContext lDc = new EzEagleDBDataContext();
        var lAreaType = (from lt in lDc.tbl_AreaTypes
                            join c in lDc.tbl_AreaCategories on lt.CategoryRef equals c.CategoryID
                            where lt.AreaTypeID== pTypeId
                            select new { lt.AreaTypeID, lt.Description, lt.CategoryRef, c.Description }).ToArray();

        for (int j = 0; j< lAreaType.Count; j++)
        {
            DataRow dr = lDt.NewRow();
            dr["AreaTypeID"] = lAreaType[j].LandmarkTypeID;
            dr["CategoryRef"] = lAreaType[j].CategoryRef;
            dr["Description"] = lAreaType[j].Description;
            dr["CatDescription"] = lAreaType[j].;
            lDt.Rows.Add(dr);
        }
    }
    catch (Exception ex)
    {
    }

Ответы [ 2 ]

2 голосов
/ 14 июня 2010

Вы можете дать им явное имя при выборе:

select new { lt.AreaTypeID, LtDescr = lt.Description, lt.CategoryRef, CDescr = c.Description }

А потом:

        dr["Description"] = lAreaType[j].LtDescr;
        dr["CatDescription"] = lAreaType[j].CDescr;
0 голосов
/ 14 июня 2010

Изменение:

select new { lt.AreaTypeID, lt.Description, lt.CategoryRef, c.Description }

На:

select new { AreaTypeID = lt.AreaTypeID,
      LtDescription = lt.Description,
      CategoryRef = lt.CategoryRef,
      CatDescription = c.Description }

Это даст каждому свойству в анонимном типе другое явное имя, а не будет просто полагаться на существующее имя.Вы можете получить к ним доступ позже, используя:

dr["Description"] = lAreaType[j].LtDescription;
dr["CatDescription"] = lAreaType[j].CatDescription;
...