将查询结果存储到变量中

将查询结果存储到变量中

我是C#的初学者,对通用类型的正确理解有些麻烦。在此示例中,我想以某种方式将查询结果存储到变量中。

我在下面显示的代码不正确,因为应该指定通用类型T。

    public class Data
    {
        public IQueryable<T> Results { get; set; }

        public Data()
        {
            var db = new Database();
        }
        public void Store()
        {
            Results = db.Products.Select(x => new { x.ProductName, x.Cost });
        }
    }


是否可以在不声明仅用于一种用途的特殊类的情况下做到这一点?

public class ProductView
{
   public string ProductName { get; set; }
   public int Country { get; set; }
}
...
public IQueryable<ProductView > Results { get; set; }


另外,为什么动态类型在此示例中不适合?

public dynamic Results { get; set; }

最佳答案

有3种方法可以解决此问题:

1)创建您提到的类似ProductView的类-经典C#6或更旧的方式

2)使用dynamic代替T,例如:public IQueryable<dynamic> Results { get; set; }-不建议使用,因为它增加了运行时错误的风险并降低了可读性

3)使用tuples(C#7功能):

public IQueryable<(string, int)> Results { get; set; } // I suppose ProductName is string and Cost is int

public void Store()
{
    Results = db.Products.Select(x => (x.ProductName, x.Cost));
}

关于c# - 将查询结果存储到变量中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57645268/

10-12 06:31