C# 如何一次查询具有多个id的LinqToWitter?

C# 如何一次查询具有多个id的LinqToWitter?,c#,linq,linq-to-twitter,C#,Linq,Linq To Twitter,我正在使用下面的linqtotwitter函数按ID获取状态,它可以按预期工作。但是我想知道是否有一种方法可以只调用这个函数一次,通过将id集合传递给查询,该函数将返回一个集合。因为我当前通过循环Id集合获取状态的方式,每次调用GetTweetByKey C: 有几种方法可以做到这一点,最好的方法可能是使用join。这似乎无济于事,因为如果找不到任何ID,就会抛出异常,这样就不会返回推文 尝试使用以下内容包装原始代码: public async Task<List<Status>

我正在使用下面的linqtotwitter函数按ID获取状态,它可以按预期工作。但是我想知道是否有一种方法可以只调用这个函数一次,通过将id集合传递给查询,该函数将返回一个集合。因为我当前通过循环Id集合获取状态的方式,每次调用GetTweetByKey

C:

有几种方法可以做到这一点,最好的方法可能是使用join。这似乎无济于事,因为如果找不到任何ID,就会抛出异常,这样就不会返回推文

尝试使用以下内容包装原始代码:

public async Task<List<Status>> GetTweetByKeys(string[] keys, StatusType statusType)
{
    var tasks = keys.Select(key => GetTweetByKey(key, statusType)).ToArray();
    var results = await Task.WhenAll(tasks);
    return results.ToList();
}
public async Task<Status> GetTweetByKey(string key, StatusType statusType)
{
    try
    {
        return await (
        from tweet in _twitterContext.Status
        where tweet.Type == statusType &&
              tweet.ID == Convert.ToUInt64(key) &&
              tweet.TweetMode == TweetMode.Extended &&
              tweet.IncludeEntities == true
        select tweet).FirstOrDefaultAsync();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        return null;
    }
}

我的回答对你有帮助吗?如果是,请将其标记为已接受。如果没有,请告诉我,我会尽力帮助你。我已经尝试过了,我现在试图解决的问题是,如果Tweet Id不存在,它将转到我的捕获块。我只想让Tweet退出并返回它什么是异常消息?您的原始代码也会发生这种情况吗?{LinqToTwitter.TwitterQueryException:找不到具有该ID的状态。位于LinqToTwitter.Net.TwitterErrorHandler.build和RowTwitterQueryExceptionString ResponseST,位于LinqToTwitter.Net.TwitterErrorHandler.HandleGenericeErrorAsynchtPres的HttpResponseMessage消息位于LinqToTwitter.Net.TwitterErrorHandler.ThrowiferroRasynchntPresponseMessage msg`是的,我在原始代码中遇到了异常,但这没有问题,因为如果tweet不存在,我将创建一个表示未找到的tweet对象的新实例。使用原始代码,如果一条tweet不存在,这并不重要,因为它将在更高级别上处理,如果一条tweet不存在,则答案中有退出我得不到任何结果,因为我得到了例外我看到了。好吧,看来你必须迭代每个键并等待所有调用。我编辑了我的答案以演示如何操作。
public async Task<List<Status>> GetTweetByKeys(string[] keys, StatusType statusType)
{
    var tasks = keys.Select(key => GetTweetByKey(key, statusType)).ToArray();
    var results = await Task.WhenAll(tasks);
    return results.ToList();
}
public async Task<Status> GetTweetByKey(string key, StatusType statusType)
{
    try
    {
        return await (
        from tweet in _twitterContext.Status
        where tweet.Type == statusType &&
              tweet.ID == Convert.ToUInt64(key) &&
              tweet.TweetMode == TweetMode.Extended &&
              tweet.IncludeEntities == true
        select tweet).FirstOrDefaultAsync();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        return null;
    }
}