Dynamic Linq Library NeGetを使用してデータベースからデータを収集しようとしています。ループしてこのエラーを表示すると、「FirstNameのIDを持つアイテムはメタデータコレクションに既に存在しています」というエラーが表示されます。
Dynamic Linq Library NuGetは重複したエイリアス列名を処理できないようです。
2つのテーブルがあり、次のように1対多の関係があり、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);
}
よろしくお願いします。
これは論理的です。 .Select("new(l.LeadID,l.FirstName,cb.FistName)")
は.Select("new(l.LeadID,l.FirstName,cb.FistName)")
ような匿名オブジェクトを作成します。
new
{
LeadID = ....,
FirstName = ....,
FirstName = ....,
}
それは違法です(同じ名前の2つのプロパティ)
as
使用
.Select("new(l.LeadID,l.FirstName,cb.FistName as FirstName2)")
作成された匿名オブジェクトが
new
{
LeadID = ....,
FirstName = ....,
FirstName2 = ....,
}
2番目の場合と同様に、を.Select
ます。