1

我正在尝试使用 Dynamic Linq Library NeGet从数据库中收集数据。当我遍历它时显示此错误“元数据集合中已存在身份为“FirstName”的项目”</p>

似乎动态 Linq 库NuGet无法处理重复的别名列名。

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

表 1:铅

列:LeadID、FirstName、DateCreated

表 2:共同借款人

列: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);
}

在此处输入图像描述

我会提前感谢您的帮助。

4

1 回答 1

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

于 2015-04-20T15:27:03.897 回答