IP Library Granted Patent US 7,860,823
Granted Patent B2
US 7,860,823 · App. 11/464,874 · Granted Dec 28, 2010

Generic interface for deep embedding of expression trees in programming languages

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,860,823
App. No.
11/464,874
Granted
Dec 28, 2010
Kind
B2
Abstract

The claimed subject matter provides a system and/or a method that facilitates querying data utilizing an explicit representation of an embedded language. An IEnumberable component can receive a data operation that can be employed on a collection of data utilizing at least one of an IEnumerable interface and an IEnumerable<T> interface. A mirror component can provide a generic interface to query the collection of data by representing the collection of data as an expression tree utilizing at least one function that mirrors the at least one IEnumerable interface and the IEnumerable<T> interface.

Claims (28)

1. A computer storage medium having stored thereon a data structure that represents an application program interface that types implement to signal that they support deep embedding of queries via expression trees, the application programming interface comprising:

(A) a generic interface that enables the creation of an expression tree representation to allow the implementation of standard query operator extension methods,

(B) wherein the generic interface inherits the IEnumerable or IEnumerable<T> interface such that each standard query operator extension method implemented by the IEnumerable or IEnumberabe<T> interface is implemented by the generic interface,

(C) wherein the generic interface implements the standard query operator extension methods by taking an expression tree as an argument rather than a delegate,

(D) wherein, upon executing the standard query operator extension methods, the results of the standard query operator extension methods are represented in the expression tree,

(E) wherein the expression tree provides a generic representation of the results of the standard query operator extension methods such that the standard query operator extension methods can be executed against any one of a plurality of different types of data stores and are not specific to a particular type of data store, and

(F) wherein an object created using the generic interface is a Queryable object, and wherein the generic interface further implements an operator that converts an IEnumerable object into a Queryable object.

2. The computer storage medium of claim 1 wherein the plurality of different types of data stores includes a relational data store, an extensible markup language (XML) data store, or an object oriented data store.

3. The computer storage medium of claim 1 wherein the standard query operator extension methods include a Where, a Select, a SelectMany, a filter function, a grouping function, and a transformation function.

4. The computer storage medium of claim 1 wherein a query processor implements the generic interface.

5. The computer storage medium of claim 1 wherein the standard query operator extension methods are executed locally or remotely.

6. The computer storage medium of claim 1 wherein the expression tree comprises an uncompiled and unevaluated data structure that represents a standard query operator extension method.

7. The computer storage medium of claim 6 wherein the generic interface implements a method by which an expression tree is compiled into a delegate.

8. The computer storage medium of claim 1 wherein the generic interface implements methods by which a string representation of a delegate is parsed into an expression tree.

9. A system comprising a processor and memory that stores a data structure that represents an application program interface that types implement to signal that they support deep embedding of queries via expression trees, the application programming interface comprising:

(A) a generic interface that enables the creation of an expression tree representation to allow the implementation of standard query operator extension methods,

(B) wherein the generic interface inherits the IEnumerable or IEnumerable<T> interface such that each standard query operator extension method implemented by the IEnumerable or IEnumberabe<T> interface is implemented by the generic interface,

(C) wherein the generic interface implements the standard query operator extension methods by taking an expression tree as an argument rather than a delegate,

(D) wherein, upon executing the standard query operator extension methods, the results of the standard query operator extension methods are represented in the expression tree,

(E) wherein the expression tree provides a generic representation of the results of the standard query operator extension methods such that the standard query operator extension methods can be executed against any one of a plurality of different types of data stores and are not specific to a particular type of data store, and

(F) wherein an object created using the generic interface is a Queryable object, and wherein the generic interface further implements an operator that converts an IEnumerable object into a Queryable object.

10. The system of claim 9 wherein the plurality of different types of data stores includes a relational data store, an extensible markup language (XML) data store, or an object oriented data store.

11. The system of claim 9 wherein the standard query operator extension methods include a Where, a Select, a SelectMany, a filter function, a grouping function, and a transformation function.

12. The system of claim 9 wherein a query processor implements the generic interface.

13. The system of claim 9 wherein the standard query operator extension methods are executed locally or remotely.

14. The system of claim 9 wherein the expression tree comprises an uncompiled and unevaluated data structure that represents a standard query operator extension method.

15. The system of claim 9 wherein the generic interface implements a method by which an expression tree is compiled into a delegate.

16. The system of claim 9 wherein the generic interface implements methods by which a string representation of a delegate is parsed into an expression tree.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2006
From: HEJLSBERG, ANDERS; WARREN, MATTHEW J.; MEIJER, HENRICUS JOHANNES MARIA; KULKARNI, DINESH C.; TORGERSEN, MADS
To: MICROSOFT CORPORATION
Reel/Frame 018118/0137 →