我有两个具有相同属性obj1和Obj2的对象。但这些对象中的值是不同的。我想结合这些对象和我想要绑定到datagrid的Itemsource的结果。可能使用lambda expession / Linq吗?
答案 0 :(得分:0)
如果Properties
的数量有限,那么我有一个简单的解决方案
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<Data1> _data1= new List<Data1>{new Data1{Name="Test11"},new Data1{Name="Test12"}};
List<Data2> _data2=new List<Data2>{new Data2{Name="Test21"},new Data2{Name="Test22"}};
List<Common> _common = new List<Common>();
_common.AddRange(_data1.ConvertToCommon());
_common.AddRange(_data2.ConvertToCommon());
foreach(var item in _common)
{
Console.WriteLine(item.Name);
}
}
}
class Data1
{
public string Name{get;set;}
}
class Data2
{
public string Name{get;set;}
}
class Common
{
public string Name{get;set;}
}
static class Extension
{
public static IEnumerable<Common> ConvertToCommon(this IEnumerable<Data1> data)
{
foreach(var item in data)
yield return new Common{Name=item.Name};
}
public static IEnumerable<Common> ConvertToCommon(this IEnumerable<Data2> data)
{
foreach(var item in data)
yield return new Common{Name=item.Name};
}
}
然后您可以使用Common
类绑定到UI。另一种选择是使用MultiBinding
,然后使用IMultiValueConverter
。您需要再次转换为数据类型。