如何在WPF数据网格中一次加载具有多个对象的数据源

时间:2014-08-07 08:52:50

标签: wpf linq entity-framework datagrid lambda

我有两个具有相同属性obj1和Obj2的对象。但这些对象中的值是不同的。我想结合这些对象和我想要绑定到datagrid的Itemsource的结果。可能使用lambda expession / Linq吗?

1 个答案:

答案 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。您需要再次转换为数据类型。