안녕하세요
제가 조직도로 구성하는 코드를 짜고 있는데
노드 추가로
부모노드 및 자식노드, 그 자식노드의 자식노드, 그 자식노드의 자식노드…
이렇게 무제한으로 자식노드 추가되는데요
그런데
노드 추가할때
가장상위노드목록부터 가장하위노드목록까지 추가노드의 Name값을 린큐해서
해당하는 Name의 값이 중복되는 기존노드의 value를 반환(복붙)하면서 추가하게 할려는데.
코린이로 인해 코드가 안 먹히네요.
먼저 코드 보여드릴게요.
노드 클래스 코드
public class NodeVM : ABindableBase<FTANodeDTO>
{
#region property (view)
/// <summary>
/// 노드 목록
/// </summary>
private ObservableCollection<UserControl> m_Nodes;
public ObservableCollection<UserControl> Nodes
{
get
{
if (m_Nodes == null)
{
m_Nodes = new ObservableCollection<UserControl>();
}
return m_Nodes;
}
set
{
m_Nodes = value;
RaisePropertyChanged("Nodes");
}
}
/// <summary>
/// 노드명
/// </summary>
public string Name
{
get
{
return Source.Name;
}
set
{
Source.Name = value;
RaisePropertyChanged("Name");
}
}
public string Value
{
get
{
return Source.Value;
}
set
{
Source.Value = value;
RaisePropertyChanged("Value");
}
}
}
이렇게 해서
if (!string.IsNullOrEmpty(windc.Name))
{
if((SelectedNode.DataContext as NodeVM).Source.Nodes.Any(x => x.Name == windc.Name))
{
MessageBox.Show("Gate 내에 중복된 Gate(Event)가 존재합니다.");
var list = (SelectedNode.DataContext as NodeVM).Source.Nodes;
while (list is IEnumerable<NodeVM>)
{
list = list.SelectMany<NodeVM, NodeVM>(x => x);
// 위 ='list"에 에러가 남.
}
var nodes = list.AsQueryable().FirstOrDefault(x => x.Name == windc.Name);
windc.Desc = nodes.Desc;
windc.ValueInputType = nodes.ValueInputType;
windc.ValueInputUnit = nodes.ValueInputUnit;
windc.Value = nodes.Value;
}
}
이렇게 했는데 에러가
Severity | Code | Description | Project | File | Line | Suppression State |
---|---|---|---|---|---|---|
Error | CS1929 | ‘List’ does not contain a definition for ‘SelectMany’ and the best extension method overload ‘Queryable.SelectMany<NodeVM, NodeVM>(IQueryable, Expression<Func<NodeVM, IEnumerable>>)’ requires a receiver of type ‘System.Linq.IQueryable<FTALib.View.Component.NodeVM>’ | FTALib | C:\Xworks\SAFETIA\3.Implementation\HydrogenProject\FTALib\View\OpenFTAView.xaml.cs | 555 | Active |
이렇게 나와서요 |
어떻게 고치면 좋을까 선배님 조언 부탁드리겠습니다.