各ノードがid
,text
、および複数のattributes
を持つツリー上にデータを表現する必要があります。LINQ to Entities - 複雑なオブジェクトの初期化(DictionaryまたはList <KeyValuePair>)
私はattributes
プロパティを一般的なままにしておき、LINQ to Entitiesを使用して初期化しました。
試み1:私のクラスでは
として:私は初期化しようとした
public class TreeNode
{
public int id { get; set; }
public string text { get; set; }
public Dictionary<string, object> attributes { get; set; }
public int? parent { get; set; }
}
:上記
List<TreeNode> taskItems = new List<TreeNode>();
using (var database = new MyDatabase())
{
taskItems =
(
from t in database.Task
select new TreeNode()
{
id = t.ID,
text = t.Name,
attributes = new Dictionary<string, object>()
{
{ "Color", t.Color },
{ "Category", t.Category }
},
parent = t.ParentID
}
)
.ToList();
}
はエラー
で失敗します0LINQ to Entitiesでは、単一要素のリスト初期化項目のみがサポートされています。
試み2:
Iは、List<KeyValuePair>
代わりにDictionary
を試みた:
public class TreeNode
{
public int id { get; set; }
public string text { get; set; }
public List<KeyValuePair<string, object>> attributes { get; set; }
public int? parent { get; set; }
}
Iが初期化しようとした:
List<TreeNode> taskItems = new List<TreeNode>();
using (var database = new MyDatabase())
{
taskItems =
(
from t in database.Task
select new TreeNode()
{
id = t.ID,
text = t.Name,
attributes = new List<KeyValuePair<string, object>>()
{
new KeyValuePair<string, object>("Color", t.Color),
new KeyValuePair<string, object>("Category", t.Category)
},
parent = t.ParentID
}
)
.ToList();
}
上記
のみパラメータなしのコンストラクタと初期化子はエンティティへのLINQでサポートされているエラーで失敗し、この時間。
どのように私はattributes
プロパティの初期化を達成することができますか?
[このSO](https://stackoverflow.com/questions/35014278/how-to-create-a-dictionary-in-linq -personating-a-class/35014914)があなたに役立つはずです。 –