如何将WCF结果'e.Result'转换为IEnumerable

时间:2011-11-26 11:38:42

标签: c# silverlight wcf silverlight-4.0

我必须在silverlight中绑定datagrid。

void proxy_DoWorkCompleted(object sender, ServiceReference1.DoWorkCompletedEventArgs e)
    {


        try
        {
            //var v = e.Result as Queryable;
            //PagedCollectionView pagesEmployees = new PagedCollectionView(v);
            //dpGridPager.Source = pagesEmployees;
            dataGrid1.ItemsSource = e.Result;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.InnerException.ToString());
        }
    }

现在这个e.Result应该是IEnumerable来绑定datagrid。我应该如何将其转换为IEnumerable?

2 个答案:

答案 0 :(得分:5)

e.Result包含DoWork操作的结果;如果服务操作的返回类型是可枚举的,那么e.Result也将是。因此,更新服务操作以返回可枚举的内容,然后更新服务引用。

答案 1 :(得分:0)

有时,将单个对象用作期望IEnumerable作为数据源的控件的数据源是有用的。我使用一个小扩展方法来处理这种情况:

public static class ObjectExtensions
{
    public static IEnumerable<T> WrapInEnumerable<T>(this T t)
    {
        yield return t;
    }
}

现在,如果您从DoWork方法返回了一个对象,则可以使用以下命令进行数据绑定:

myControl.DataSource = DoWork().WrapInEnumerable();