LINQ Join返回显式类型而不是VAR

时间:2018-11-02 14:12:03

标签: c# linq

我有这台LINQ可以完成我想要的工作

var query = context.MasterTemplateOfficeTag
             .Join(context.Tag, x => x.TagId, y => y.Id, (x, y) => new { y.Name })
             .ToList();

尽管我的问题是我希望LINQ返回list<String>,因为Select语法=> new { y.Name })的类型为string。因此,如果编译器知道返回类型,为什么我不能使用list<String>

我想要这样的东西

 List<String> name = context.MasterTemplateOfficeTag
                      .Join(context.Tag, x => x.TagId, y => y.Id, (x, y) => new { y.Name })
                      .ToList();

这可能吗?

谢谢

3 个答案:

答案 0 :(得分:6)

好吧

   new { y.Name }

是具有单个string字段(Name)的匿名对象。放下new {...}包装并返回string

   List<String> name = context
     .MasterTemplateOfficeTag
     .Join(
         context.Tag, 
         x => x.TagId, 
         y => y.Id, 
        (x, y) => y.Name ) // <- Now we return string: y.Name
     .ToList();

答案 1 :(得分:3)

new { y.Name })创建一个具有Name属性的匿名对象。

您只需返回y.Name就可以使用List<string>

答案 2 :(得分:2)

返回字符串而不是返回匿名对象

List<String> name = context.MasterTemplateOfficeTag
                      .Join(context.Tag, x => x.TagId, y => y.Id, (x, y) => y.Name)
                      .ToList();