显示两列

时间:2013-10-02 04:02:47

标签: c#

这是一个SL / WPF应用程序,试图显示两列。以下代码:

MyDomainContext context = new MyDomainContext();
dataGrid1.ItemsSource = context.DBTables;
context.Load(context.GetTwoDataBasesQuery())

domainservice.cs包含如下方法定义:

public IQueryable<DBTable>GetTwoDataBases()
  {
    return this.ObjectContext.DBTables;
  }

此代码工作正常但返回上下文中的所有列                 我只需要返回两列,所以更改如下

public IQueryable<DBTable>GetTwoDataBases()
  {
      //trying to return columns
      return GetDBTables().Select(m => new { m.col1, m.col2 });                           
  }

但编译器生成错误,不接受“返回”。

  

以下错误无法隐式转换类型   'System.Linq.IQueryable'来   'System.Linq.IQueryable'。一个明确的   转换存在。

如何仅返回两列? 比X

1 个答案:

答案 0 :(得分:1)

您将返回匿名类型,但您拥有的回复类型为DBTable。您可以创建返回类型object或定义新的class并创建该类的对象。

将对象设为返回类型

public object GetTwoDataBases()
{
     //trying to retrun columns
     return GetDBTables().Select(m => new { m.col1, m.col2 });    
}

OR,返回IQueryable而不是匿名类型

public IQueryable<YourCustomType>GetTwoDataBases()
{
     //trying to retrun columns
     return GetDBTables()
            .Select(m => new YourCustomType { YourCustomTypeProperty1 = m.col1, YourCustomTypeProperty2 = m.col2 });    
}