无法将类型'System.Collections.Generic.List <System.Linq.IGrouping <int,x >>'隐式转换为'System.Collections.Generic.List <x>'

时间:2019-06-19 14:42:25

标签: c# entity-framework linq entity-framework-core

我将此代码写为NewsDto的返回列表:

public class NewsDto
{
    public int CatId { get; set; }
    public string CatName { get; set; }
    public List<NewsContent> NewsContents { get; set; }

}

public class NewsContent
{
    public int Id { get; set; }
    public string ImagePath { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
}

我这样写:

private async Task<List<NewsDto>> GetCatNews()
    {
        return Entities.GroupBy(e => e.CategoryId).Select(x => x).ToList();
    }

但是它告诉我这个错误:

  

严重性代码描述项目文件行抑制状态   错误CS0029无法将类型'System.Collections.Generic.List<System.Linq.IGrouping<int, MainProject.Entities.Entities.News.Post>>'隐式转换为'System.Collections.Generic.List<IranNews.Model.NewsDto>'IranNews.Services E:\ MyProject \ IranNews \ IranNews.Services \ Service \ Services \ NewsService.cs 36有效

出什么问题了?我该如何解决?????

我除了这是:

   "data": [
{
  "catId": 1,
  "catName": "سیاسی",
  "newsContents": [
    {
      "id": 3048,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/509246904089447.jpg",
      "title": "نفت در برابر غذا! / حقایق تلخ اینستکس چیست؟ ا",
      "description": "اروپایی‌ها بعد از ۹ ماه تعلل و مذاکره و ۴ ماه پس از اعلام تصمیم‌شان برای مقابله با تحریم‌های ثانویه امریکا یک ساز و کار با ظرفیت محدود آن هم نه برای تبادل پول بلکه برای تامین غذا و دارو ایجاد کرده اند.\n"
    },
    {
      "id": 3049,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/349512794187136.jpg",
      "title": "پاسخ ایران به ادعای آمریکا در رابطه با بروز تنش در منطقه",
      "description": "نمایندگی ایران در سازمان ملل، ادعاها اخیر آمریکا از جمله دستور تخلیه کارمندان غیرضروری این کشور در عراق را آخرین پرده از جنگ تبلیغاتی آمریکا علیه ایران با استفاده از \"گزارش‌های اطلاعاتی تقلبی\"دانست که به منظور بهانه شروع یک درگیری احتمالی بیان می‌شود.\n"
    },
    {
      "id": 3050,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/946066292956619.jpg",
      "title": "به زودی احکام افزایش دستمزد کارمندان ابلاغ می‌شود",
      "description": "تسنیم نوشت: نماینده همدان در مجلس از نشست مشترک دولت، مجلس و دیوان محاسبات برای تعیین تکلیف حقوق و دستمزد کارمندان خبر داد.\n\n"
    },
    {
      "id": 3051,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/322083917213095.jpg",
      "title": "عصبانیت شدید ترامپ از سیاست های بولتون و ترامپ در قبال ایران",
      "description": "روزنامه واشنگتن پست به نقل از چند مقام آمریکایی گزارش داد دونالد ترامپ از مشاوران ارشدی که به نظر وی ایالات متحده را به سوی تقابل با ایران می برند ناراضی و ناامید شده و او به دنبال گفت وگو با ایران است."
    },
    {
      "id": 3052,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/322083917213095.jpg.jpg",
      "title": "اقدامات ایران غرب را پشیمان خواهد کرد",
      "description": "عضو شورای مرکزی حزب موتلفه اسلامی گفت: آمریکایی‌ها در برجام بد عهدی کردند و از آن خارج شدند، لذا مذاکره با آمریکا تعطیل است."
    },
    {
      "id": 3053,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/215729472154856.jpg",
      "title": "ایران در برابر آمریکا باید سیاست تهاجمی به کار گیرد",
      "description": "نایب رییس جبهه پیروان خط امام و رهبری گفت: باید در سالگرد خروج آمریکا از برجام سیاست تهاجمی به کار گیریم و خیلی پذیرفته نیست که در برابر آمریکایی‌ها منفعل باشیم.\n"
    }
  ]
},
{
  "catId": 14,
  "catName": "ورزشی",
  "newsContents": [
    {
      "id": 3042,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/226736856824855.jpeg",
      "title": "همه احتمالات درباره قفس توری ” استقلال ” ؛ وضعیت رحمتی و حسینی چگونه خواهد بود ؟",
      "description": "استقلال در ادوار مختلف دروازه‌بان‌های خوبی داشته و در خیلی سال‌ها کیفیت خوب هر دو دروازه‌بان از نظر فنی به نفع تیم بوده، اما مشکلات زیادی هم درست کرده است.\n\n"
    },
    {
      "id": 3043,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/21463635040650.jpg",
      "title": "پرسپولیس ستاره استقلال را به صورت رسمی جذب کرد",
      "description": "به گزارش گروه ورزشی خبرگزاری برنا؛ با نظر مثبت برانکو، ساسان زمانه، دروازه بان تیم امید استقلال به صورت رسمی به تیم فوتبال پرسپولیس پیوست.\n\n"
    },
    {
      "id": 3044,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/836138365621559.jpg",
      "title": "یک میلیارد به من بدهید استقلال را قهرمان کنم",
      "description": "گلر سابق استقلال نسبت به شرایط کنونی این تیم ناراضی است و از بازیکنان گلایه دارد.\n\n"
    },
    {
      "id": 3045,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/622410699584925.jpg",
      "title": "مهره ثابت برانکو رفتنی شد",
      "description": " فصل نقل‌وانتقالات از همین حالا برای باشگاه پرسپولیس آغاز شده است."
    },
    {
      "id": 3046,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/130684227374618.jpg",
      "title": "سکوی قهرمانی پرسپولیس در حال آماده‌سازی",
      "description": "به گزارش شریان نیوز،پرسپولیس در آستانه قهرمانی لیگ برتر قرار دارد.\n\n"
    },
    {
      "id": 3047,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/149180200034218.jpg",
      "title": "سلطانی‌فر: زیر سؤال بردن همه چیز با یک شکست، عین بی‌انصافی و بی‌عدالتی است",
      "description": "مسعود سلطانی‌فر، وزیر ورزش و جوانان گفت: اینکه هر کسی شکست بخورد و بخواهد همه چیز را زیر سؤال ببرد، عین بی‌انصافی و بی‌عدالتی است.\n"
    }
  ]
},
{
  "catId": 1011,
  "catName": "فناوری",
  "newsContents": [
    {
      "id": 3054,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/458855903672103.jpg",
      "title": "دستیابی به فرمولاسیون بزاق زالو برای ترمیم زخم",
      "description": "محققان کشور درصدد هستند تا فرمولاسیون سرم و کرمی که از بزاق زالوی ایرانی به دست آورده اند را برای ترمیم زخم به کار ببرند.\n\n"
    },
    {
      "id": 3055,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/5412820294475.jpg",
      "title": "آزمایش موفقیت آمیز سپر دفاعی ایرانی برای خنثی کردن «استاکس‌نت»",
      "description": "وزیر ارتباطات و فناوری اطلاعات از موفقیت‌آمیز بودن آزمایش سپر دفاعی (فایروال) برای سیستم‌های اتوماسیون صنعتی که از سوی دانشمندان جوان ایران ساخته شده، خبر داد.\n\n"
    },
    {
      "id": 3056,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/135842434489640.jpg",
      "title": "شرکت های فناوری در برابر محتوای خشونت آمیز اینترنت متعهد شدند",
      "description": "طرح «کریستی چرچ» در اجلاسی با حضور رهبران ۹ کشور و نمایندگان شرکت های فناوری امضا شد. در این سند قانونی شرکت‌های فناوری از جمله فیس بوک، توئیتر، گوگل به اقدامات خاص متعهد شدند.\n\n"
    },
    {
      "id": 3057,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/364654025412296.jpg",
      "title": "عملکرد مناطق ویژه علم و فناوری بازنگری می شود",
      "description": "دبیرکل شورای عالی علوم تحقیقات و فناوری با بیان اینکه عملکرد مناطق ویژه علم و فناوری خوب نبوده گفت: عملکرد این مناطق مورد بازنگری قرار می گیرد.\n\n"
    },
    {
      "id": 3058,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/157874084121194.jpg",
      "title": "تاکسی هوایی آلمانی برای نخستین بار آزمایش شد",
      "description": "نخستین آزمایش تاکسی هوایی متعلق به شرکت آلمانی لیلیوم انجام شد. این تاکسی هوایی الکتریکی ۳۶ موتور دارد و به طور عمودی از زمین بلند می شود و فرود می آید."
    },
    {
      "id": 3059,
      "imagePath": "https://localhost:44372/Uplaod/NewsPictureFolder/NewsMainPicture/236575355911763.jpg",
      "title": "مایکروسافت مجبور به وصله کردن ویندوزهای از رده خارج شد",
      "description": "اگر چه مایکروسافت سالهاست دیگر از ویندوز ایکس پی پشتیبانی نمی‌کند، اما خطرات روزافزون بدافزار واناکرای این شرکت را مجبور به پشتیبانی مجدد از ویندوزهای قدیمی کرده است."
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

您的方法实现似乎是错误的。您将需要为期望的结果编写以下linq查询:

private async Task<List<NewsDto>> GetCatNews()
{
    return Entities.GroupBy(e => e.CategoryId)
               .Select(x => new NewsDto() 
                               { 
                                  catId = x.Key,
                                  catName = x.First().CategoryName,
                                  NewsContents = x.ToList()
                               }).ToList();
}