LINQ to Twitter is an open source 3rd party LINQ Provider (Twitter Library) for the Twitter micro-blogging service. It uses standard LINQ syntax for queries and includes method calls for changes via the Twitter API.
The following query returns search results where people are tweeting about LINQ providers:
var twitterCtx = new TwitterContext(...);
TwitterSearch? searchResponse =
await
(from search in twitterCtx.TwitterSearch
where search.Type == SearchType.RecentSearch &&
search.Query == "LINQ to"
select search)
.SingleOrDefaultAsync();
if (searchResponse?.Tweets != null)
searchResponse.Tweets.ForEach(tweet =>
Console.WriteLine(
$"\nID: {tweet.ID}" +
$"\nTweet: {tweet.Text}"));
From a coding experience perspective, the TwitterContext
type is analogous to the Entity Framework DBContext
. You use the TwitterContext
instance, twitterCtx
, to access IQueryable<T>
tweet categories. In the example above, the TwitterSearch
will give you the ability to search Twitter for tweets meeting some criteria.
Note: The ellipses in the TwitterContext parameters indicates that you need to provide an authorizer with credentials, which is required. You can visit Securing Your Applications for documentation on authorizers and visit the Download page for working examples.
Each query category has a Type
property for the type of tweets you want to get back. For example, Tweet
queries can be made for Mentions
, ReverseChronological
, or Tweets
timelines. Each query category also has an XxxType
enum to help you figure out what is available. The example above uses SearchType.RecentSearch
to perform searches on matching tweets that happened within the last two weeks or so. Another example would be Like
queries which might have LikeType.Lookup
as its Type
to get all the users who liked a tweet. The Type
idiom is consistent across all query categories.
Just like other LINQ providers, you get an IQueryable<T>
back from the query. You can see how to materialize the query by invoking the SingleOrDefaultAsync
operator. For TwitterSearch
results, you receive one TwitterSearch
entity that contains metadata about the Search
query and also contains a Tweets
property that is a collection of Tweet
entities. Just like other LINQ providers, LINQ to Twitter does deferred execution, so operators such as ToListAsync
and SingleOrDefaultAsync
or statements such as for
and foreach
loops will cause the query to execute and make the actual call to Twitter.
LINQ to Twitter is asynchronous. You can see this where the code above await's
the query, using the SingleOrDefaultAsync
operator. Commands are async also. e.g. await TweetAsync("Hello from LINQ to Twitter")
.
For more details on how LINQ to Twitter works, you can visit LINQ to Twitter v6 APIs for API specific examples. The downloadable source code also contains copious examples in the projects. Just look in the Samples folder.
In addition to being able to download from this site, you can also automatically install LINQ to Twitter into your projects via NuGet;
- follow @JoeMayo for releases and related blog posts.