【问题标题】:Getting single result from a query with anonymous types in Linq To Sql从 Linq To Sql 中的匿名类型查询中获取单个结果
【发布时间】:2009-08-27 13:01:22
【问题描述】:

我有一个单一结果的查询。结果是匿名类型。如何使用访问类型,这样我就不必每次都使用 query.Single()?

这是我的查询:

var result = from row in db.Table 
select new { CustomName = row.RowName };

这就是我现在使用它的方式:

string name = result.Single().CustomName;

当然,我的真实代码有更多属性,对于每个属性,我每次都必须调用 .Single()。有没有更简单的方法可以在这里访问 CustomName?

【问题讨论】:

    标签: .net linq linq-to-sql anonymous-types


    【解决方案1】:

    你可以说

    var result = (from row in db.Table
                  select new { CustomName = row.RowName }).Single();
    
    string name = result.CustomName;
    // etc.
    

    但可能最好的方法是将您的结果封装到一个真正的非匿名类中。那你可以说

    MyClass result = (from row in db.Table
                      select new MyClass() { CustomName = row.RowName }).Single();
    
    string name = result.CustomName;
    // etc.
    

    例如,在这里你会拥有,

    class MyClass {
        public string CustomName { get; set; }
        // etc.
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试将 Single 结果分配给变量?

      var singleResult = result.Single();
      string name = singleResult.CustomName;
      // etc...
      

      此外,每次调用Single() 时,它都会执行查询。您应该获取一次价值并在需要的任何地方使用它。只要您使用var 就可以了,只是不能从方法中返回该匿名类型。

      【讨论】:

        【解决方案3】:

        你可以试试

        var result = (from row in db.Table 
        select new { CustomName = row.RowName }).Single();
        

        然后您可以使用

        访问您的财产
        var foo = result.CustomName; // etc
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-23
          • 1970-01-01
          • 2012-07-19
          • 2017-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多