动态Linq库无法处理重复的别名列名称

时间:2015-04-20 15:22:08

标签: linq expression-trees dynamic-linq linq-expressions dynamic-queries

我正在尝试使用Dynamic Linq Library NeGet从数据库中收集数据。当我循环显示此错误时“带有标识的项目' FirstName'已经存在于元数据集'

似乎Dynamic Linq Library NuGet无法处理重复的别名列名。

我有两个表,它具有如下所示的一对多关系,在Lead表和CoBorrower表中包含相同的列名。

表1:潜在客户

列:LeadID,FirstName,DateCreated

表2:CoBorrower

列:LeadID,CoBorrowerID,FirstName,Tax,DateCreated

这是我的代码段

var res = (from l in db.Leads
join db.CoBorrower.GetAll()
on l.LeadID equals cb.LeadID
select new { l, cb }).AsQueryable();
string myCustomCondition="FistName=myname";
IQueryable iq = res.Where(myCustomCondition)
                .OrderBy(reportBulder.Group1)
                .Select("new(l.LeadID,l.FirstName,cb.FistName)")
                .GroupBy("LeadID", "it")
                .Select("new (it.Key as Key, it as Value)");
foreach (dynamic group in iq)
{
 string Key = group.Key.ToString();
 List<dynamic> items = new List<dynamic>();
  foreach (dynamic album in group.Value)
   {
    items.Add(album);
   }
 dataList.Add(Key, items);
}

enter image description here

我将提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这是合乎逻辑的。 .Select("new(l.LeadID,l.FirstName,cb.FistName)")将创建一个匿名对象,如:

new 
{
    LeadID = ....,
    FirstName = ....,
    FirstName = ....,
}

这是非法的(两个具有相同名称的属性)

使用as

.Select("new(l.LeadID,l.FirstName,cb.FistName as FirstName2)")

以便创建的匿名对象是

new 
{
    LeadID = ....,
    FirstName = ....,
    FirstName2 = ....,
}

正如您在第二个.Select中所做的那样。