Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅将必需的数据Linq加载到Sql和ExpandooObject_C#_Linq_Linq To Sql - Fatal编程技术网

C# 仅将必需的数据Linq加载到Sql和ExpandooObject

C# 仅将必需的数据Linq加载到Sql和ExpandooObject,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我试图通过以下(简化)查询减少sql server调用: 如果不需要整个用户实体,请创建一个仅包含所需字段的类型,并将其强制转换为该类型 public class UserInfo { public string DisplayName { get; set; } //include anything else you may need. } var timequery = from t in TimeRecords select new Use

我试图通过以下(简化)查询减少sql server调用:


如果不需要整个用户实体,请创建一个仅包含所需字段的类型,并将其强制转换为该类型

public class UserInfo
{
    public string DisplayName { get; set; }
    //include anything else you may need.
}

var timequery = from t in TimeRecords
                select new UserInfo
                {
                 DisplayName = t.User.DisplayName
                 };

这不是铸造,这是一个完全不同的概念。我会称之为投影。我如何让动态费用列这样做?或者我会调用动态代码并构建它吗?@sumguiy否,这将只获得displayname,您将失去对稍后从中查询的任何其他数据的访问权限。你能发布你的表结构或类声明吗…@Rickjames我添加了类,简化了,我最终将扩展到除用户之外的其他表数据,但将以相同的方式处理它们,因此对于question@SumGuy那就是我要走的路。IMHO比提取大量不需要的数据要好得多。很可能性能也会更好。
class TimeRecord
{
     User User;
     EntitySet<Expense> Expenses;
     //other stuff
}

class User
{
     string DisplayName;
     //other stuff
}

class Expense
{
    decimal Amount;
    ExpenseType ExpenseType;
    //other stuff
}

class ExpenseType
{
     string Description;
     //other stuff
}
public class UserInfo
{
    public string DisplayName { get; set; }
    //include anything else you may need.
}

var timequery = from t in TimeRecords
                select new UserInfo
                {
                 DisplayName = t.User.DisplayName
                 };