c# - 如何一次查询具有多个 id 的 LinqToTwitter?
问题描述
我正在使用下面的 linqtotwitter 函数按 ID 获取状态,它按预期工作。但我想知道是否有办法只调用这个函数一次(通过将 id 的集合传递给查询,函数将返回一个集合)。因为我目前通过循环遍历 ID 集合并GetTweetByKey
每次调用来获取状态的方式。
C#:
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;
}
}
解决方案
有几种方法可以做到这一点,最好的可能是使用 (这似乎一无所获,因为如果没有找到任何 ID,则会抛出异常,因此无法返回任何推文)。join
.
尝试用以下方式包装您的原始代码:
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;
}
}
推荐阅读
- talend - Talend tRunJob CHILD_EXCEPTION_STACKTRACE 为空
- c - 使用 C 从框架中提取数据
- java - Spring 依赖注入无法正常工作
- c# - Kendo 下拉列表解析变量
- jasper-reports - 由于分页符导致的空白(最后一张除外)
- javascript - require 不是 angular 2 highchart 中的函数
- java - 无法正确使用 Java 日期函数
- java - 使用 apache.commons.io (IOUtils.copy) 转换为 Java 字符串时,MultipartFile 丢失了 Unicode 字符
- java - 没有默认构造函数时反序列化失败
- javascript - 如何使用 Javascript 删除文本(.txt)文件中的最后一行