首页 > 解决方案 > LINQ to Entities in linq join with tuples 中仅支持无参数构造函数和初始值设定项

问题描述

我正在尝试加入两个表并创建一个元组列表,但由于“LINQ to Entities 仅支持无参数构造函数和初始化程序”而出现错误

var list = (
    from a in db.CategoryRatings
    join c in db.OverallPerformanceByCategories
        on a.CategoryRatingId equals c.CategoryRatingId
    where c.ReviewId == review.ReviewId
    select(new Tuple<string, double, double>(a.CategoryRatingName, a.CategoryWeight, c.Score))
).ToList(); 

ViewData["ListOverallRating"] = list;

我不想创建匿名类型列表来使用元组,也可以建议其他方式。

标签: c#entity-frameworklinqentity-framework-6tuples

解决方案


使用匿名类型从数据库中获取并转换为内存中的元组。

var list = (
    from a in db.CategoryRatings
    join c in db.OverallPerformanceByCategories
        on a.CategoryRatingId equals c.CategoryRatingId
    where c.ReviewId == review.ReviewId
    select(new {a.CategoryRatingName, a.CategoryWeight, c.Score})
)
.AsEnumerable()
.Select(t =>
    new Tuple<string, double, double>(t.CategoryRatingName, t.CategoryWeight, t.Score))
.ToList(); 

ViewData["ListOverallRating"] = list;

希望这有帮助!


推荐阅读