Ошибки при использовании запроса LINQ в приложении Silverlight - PullRequest
0 голосов
/ 16 августа 2011

Я пытаюсь использовать службы WCF с помощью приложения Silverlight в Sharepoint.

Он будет отображать все данные из списка в сетке. Как-то это выдает ошибку.

Невозможно преобразовать лямбда-выражение в тип 'system.Delegate', поскольку оно не является типом делегата.

использование универсального типа 'system.collections.generic.ienumerable' требует аргументов 1 типа

SLprojectsCRUD2010WCF.sharepointservice.list1item 'является типом, но используется как переменная.

Как это можно решить?

private SharePointService.SkinnyBlondeDataContext _context;

public MainPage()
{
    InitializeComponent();
    this.Loaded += new RoutedEventHandler(LayoutRoot_Loaded);
}

private void ShowProjects()
{
    // Declare the LINQ query
    var projectsQuery = (from p in _context.Tasks
                            select p) as DataServiceQuery<SharePointService.TasksItem>;
    // Execute the LINQ query
    projectsQuery.BeginExecute((IAsyncResult asyncResult) => Dispatcher.BeginInvoke(() =>
    {                // Runs in the UI thread
        // EndExecute returns
        IEnumerable < TasksItem > this.dataGridProjects.ItemsSource = projectsQuery.EndExecute(asyncResult).ToList();
    }), projectsQuery);
}

private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
    // Get the context
    _context = new SharePointService.SkinnyBlondeDataContext(
                new Uri("http://vanir0269/_vti_bin/listdata.svc", UriKind.Absolute));
    ShowProjects();
}

1 Ответ

1 голос
/ 16 августа 2011

Пока ваш исходный код не отформатирован должным образом, будет трудно понять, в чем заключается проблема LINQ, но проблема с лямбда-выражением проста: Dispatcher.BeginInvoke принимает Delegate, а лямбда-выражения можно преобразовать только в конкретные типы делегатов. Это легко исправить:

projectsQuery.BeginExecute((IAsyncResult asyncResult) => {
    Action action = () => {
        // Code in here
    };
    Dispatcher.BeginInvoke(action, null);
});
...