Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Результат выполнения LINQ запроса / 14 сообщений из 14, страница 1 из 1
12.02.2011, 20:56
    #37113317
xpoft2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
Собственно вопрос возник вот в чем:
В результате выполнения LINQ запроса нам возвращается значение типа ObjectQuery(я так понимаю это необходимо для отложенных запросов), далее для полноценной работы с коллекцией лучше привести реальный результат к IBindingList:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    public partial class MainWindow : Window
    {

        private IBindingList bl;

        public MainWindow()
        {
            InitializeComponent();
            GetPost();
        }

        private void GetPost()
        {
            using (priceEntities context = new priceEntities())
            {
                this.bl = ((from p in context.Prices select p) as IListSource).GetList() as IBindingList;

                this.grdMain.DataContext = this.bl;            
            }
        
        }
    }

И так, загвоздка в том что класс ObjectQuery реализует интерфейс IListSource, НО при рассмотрении его по "F12" там НЕТ определенного в нем метода GetList();

Как так? Почему в классе реализующем интерфейс нет метода определнного в этом интерфейсе?

ЗЫ: Вариант приходящий на ум, то что по F12 нам не показывают всех методов мягко сказать не вяжется, если и есть смысл в подобном сокрытии, то мне кажется не в этом случае.
...
Рейтинг: 0 / 0
12.02.2011, 23:22
    #37113428
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
LINQ запроса нам возвращается значение типа ObjectQuery что-то мне подсказывает, что в вашем случае речь идет скорее о IQueryable<Price>

и почему бы просто не написать grdMain.DataContext = context.Prices?
...
Рейтинг: 0 / 0
13.02.2011, 00:09
    #37113465
Denis Gladkikh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
Extension methods , в целом обычные статические методы
...
Рейтинг: 0 / 0
13.02.2011, 12:16
    #37113684
xpoft2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
ВестникLINQ запроса нам возвращается значение типа ObjectQuery что-то мне подсказывает, что в вашем случае речь идет скорее о IQueryable<Price>

и почему бы просто не написать grdMain.DataContext = context.Prices?

Ну в конкретном примере да, можно и так написать, а что если нужно получить не весь список данных из таблицы, как бывает значительно чаще?

Вопрос то состоит в другом, почему в классе реализующем интерфейс не определен метод этого интерфейса.
...
Рейтинг: 0 / 0
13.02.2011, 12:38
    #37113698
Denis Gladkikh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
xpoft2010,

еще раз - это Extension methods, в целом обычные статические методы
...
Рейтинг: 0 / 0
13.02.2011, 14:21
    #37113760
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
а что если нужно получить не весь список данных из таблицы, как бывает значительно чаще?
var q = context.Prices.Where(p => p.Discount < 10);
grid.DataContext = q;
...
Рейтинг: 0 / 0
13.02.2011, 17:59
    #37113954
xpoft2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
Denis Gladkikhxpoft2010,

еще раз - это Extension methods, в целом обычные статические методы



я понял, но на msdn нет в extension методах GetList();, зато есть в Explicit interface implementations.
http://msdn.microsoft.com/en-us/library/system.data.objects.objectquery.aspx
...
Рейтинг: 0 / 0
13.02.2011, 19:59
    #37114021
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
GetList() определен в ObjectQuery (не generic), см рефлектор
...
Рейтинг: 0 / 0
14.02.2011, 09:26
    #37114359
xpoft2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
ВестникGetList() определен в ObjectQuery (не generic), см рефлектор

Я конечно все понимаю, но нету его там:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
namespace System.Data.Objects
{
    // Summary:
    //     Implements common functionality for queries against a conceptual model using
    //     both LINQ to Entities and System.Data.Objects.ObjectQuery<T>.
    public abstract class ObjectQuery : IOrderedQueryable, IQueryable, IEnumerable, IListSource
    {
        // Summary:
        //     Returns the command text for the query.
        //
        // Returns:
        //     A string value.
        public string CommandText { get; }
        //
        // Summary:
        //     Gets the object context associated with this object query.
        //
        // Returns:
        //     The System.Data.Objects.ObjectContext associated with this System.Data.Objects.ObjectQuery<T>
        //     instance.
        public ObjectContext Context { get; }
        //
        // Summary:
        //     Gets or sets a value that indicates whether the query plan should be cached.
        //
        // Returns:
        //     A value that indicates whether the query plan should be cached.
        public bool EnablePlanCaching { get; set; }
        //
        // Summary:
        //     Gets or sets how objects returned from a query are added to the object context.
        //
        // Returns:
        //     The query System.Data.Objects.MergeOption.
        public MergeOption MergeOption { get; set; }
        //
        // Summary:
        //     Gets the parameter collection for this object query.
        //
        // Returns:
        //     The parameter collection for this System.Data.Objects.ObjectQuery<T>.
        public ObjectParameterCollection Parameters { get; }

        // Summary:
        //     Executes the untyped object query with the specified merge option.
        //
        // Parameters:
        //   mergeOption:
        //     The System.Data.Objects.MergeOption to use when executing the query. The
        //     default is System.Data.Objects.MergeOption.AppendOnly.
        //
        // Returns:
        //     An System.Data.Objects.ObjectResult<T> that contains a collection of entity
        //     objects returned by the query.
        public ObjectResult Execute(MergeOption mergeOption);
        //
        // Summary:
        //     Returns information about the result type of the query.
        //
        // Returns:
        //     A System.Data.Metadata.Edm.TypeUsage value that contains information about
        //     the result type of the query.
        public TypeUsage GetResultType();
        //
        // Summary:
        //     Returns the commands to execute against the data source.
        //
        // Returns:
        //     A string that represents the commands that the query executes against the
        //     data source.
        [Browsable(false)]
        public string ToTraceString();
    }
}
...
Рейтинг: 0 / 0
14.02.2011, 09:29
    #37114363
Denis Gladkikh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
xpoft2010,

вот этот extension method - http://msdn.microsoft.com/en-us/library/bb342261.aspx
...
Рейтинг: 0 / 0
14.02.2011, 09:31
    #37114366
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
...
Рейтинг: 0 / 0
14.02.2011, 09:33
    #37114367
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
Denis Gladkikhxpoft2010,

вот этот extension method - http://msdn.microsoft.com/en-us/library/bb342261.aspx речь идет о IListSource.GetList(), а не ToList(). и extension method не может использоваться как реализация интерфейса
...
Рейтинг: 0 / 0
14.02.2011, 09:50
    #37114385
Denis Gladkikh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
ВестникDenis Gladkikhxpoft2010,

вот этот extension method - http://msdn.microsoft.com/en-us/library/bb342261.aspx речь идет о IListSource.GetList(), а не ToList(). и extension method не может использоваться как реализация интерфейса
упс, в данном случае так и есть. а я что-то даже на пример не посмотрел, услышал вопрос, сразу почему-то подумал, что автор не видит extension метода.
...
Рейтинг: 0 / 0
14.02.2011, 10:09
    #37114414
xpoft2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выполнения LINQ запроса
Вестник

Спасибо, то что и было нужно.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Результат выполнения LINQ запроса / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]