C# 仅将必需的数据Linq加载到Sql和ExpandooObject
我试图通过以下(简化)查询减少sql server调用: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
如果不需要整个用户实体,请创建一个仅包含所需字段的类型,并将其强制转换为该类型
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
};