【问题标题】:Does anyone know why I'm getting this asp.net error? CS1061 linqtotwitter有谁知道我为什么会收到这个 asp.net 错误? CS1061 linqtotwitter
【发布时间】:2018-02-10 03:23:17
【问题描述】:

使用 linqtotwitter 我试图搜索推文并将它们显示在使用此模型的表格中:

using System;
using System.ComponentModel;


namespace test.Models
{
    public class TweetSearchModel
    {
        [DisplayName("Tweet ID")]
        public ulong ID { get; set; }

        [DisplayName("Screen Name")]
        public string ScreenName { get; set; }

        [DisplayName("Tweet")]
        public string Text { get; set; }

        internal object ToListAsync()
        {
            throw new NotImplementedException();
        }
    }
}

这个视图:

@model IEnumerable<test.Models.TweetSearchModel>
@{
    ViewBag.Title = "Search";
}

<table>

@foreach (var item in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ScreenName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Text)
        </td>
    </tr>
}

</table>

还有这个控制器:

using System;
using System.Linq;
using System.Threading.Tasks;
using System.Web.Mvc;
using aLevel.Models;
using LinqToTwitter;
using System.Collections.Generic.I;
using System.Data.Entity;

namespace test.Controllers
{
    public class QueriesController : Controller
    {
        // GET: Queries
        public ActionResult Index()
        {
            return View();
        }

        [ActionName("Search")]
        public async Task<ActionResult> SearchAsync()
        {
            var auth = new MvcAuthorizer
            {
                CredentialStore = new SessionStateCredentialStore()
            };

            var ctx = new TwitterContext(auth);

            var searchResponse =
                await
                (from search in ctx.Search
                 where search.Type == SearchType.Search &&
                       search.Query == "\"LINQ to Twitter\""
                 select search)
                .SingleOrDefaultAsync();

            var tweets =
                await
                (from tweet in searchResponse.Statuses
                 select new TweetSearchModel
                 {
                     ID = tweet.ID,
                     ScreenName = tweet.ScreenName,
                     Text = tweet.Text
                 })
                 .ToListAsync();

            return View(tweets);
        }
    }
}

但是,“.ToListAsync”抛出错误“CS1061 'IEnumerable' 不包含 'ToListAsync' 的定义,并且找不到接受“IEnumerable”类型的第一个参数的扩展方法 'ToListAsync'(你是缺少 using 指令或程序集引用?)"

【问题讨论】:

    标签: c# asp.net twitter linq-to-twitter


    【解决方案1】:

    searchResponse.StatusesList&lt;Status&gt;,因此您正在执行 LINQ to Objects 查询。 LINQ to Objects (Enumerable) 没有ToListAsync,我不确定它应该有,因为查询不会导致进程外操作——它只是在内存中。您可以使用非异步运算符,如下所示:

            var tweets =
                (from tweet in searchResponse.Statuses
                 select new TweetSearchModel
                 {
                     ID = tweet.ID,
                     ScreenName = tweet.ScreenName,
                     Text = tweet.Text
                 })
                .ToList();
    

    【讨论】:

      【解决方案2】:

      ToListAsync 是一个带有参数cancellationToken 的扩展方法,见https://msdn.microsoft.com/de-de/library/dn220261.aspx。所以你需要给参数cancellationToken传递一个值来摆脱编译错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-25
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多