Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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查询构建为函数 var query=(来自dataContext.Materials中的material 连接dataContext中的materialCategories.materialCategories on material.Id等于 材料类别.材料Id 选择新的 { 材料Id, 材料名称, 材料,拍摄, materialCategories.CategoryName }); //按日期筛选 query=query.Where(x=>x.take>=minDate&&x.take_C#_Linq - Fatal编程技术网

C# 将linq查询构建为函数 var query=(来自dataContext.Materials中的material 连接dataContext中的materialCategories.materialCategories on material.Id等于 材料类别.材料Id 选择新的 { 材料Id, 材料名称, 材料,拍摄, materialCategories.CategoryName }); //按日期筛选 query=query.Where(x=>x.take>=minDate&&x.take

C# 将linq查询构建为函数 var query=(来自dataContext.Materials中的material 连接dataContext中的materialCategories.materialCategories on material.Id等于 材料类别.材料Id 选择新的 { 材料Id, 材料名称, 材料,拍摄, materialCategories.CategoryName }); //按日期筛选 query=query.Where(x=>x.take>=minDate&&x.take,c#,linq,C#,Linq,您不能将匿名对象传递给方法。您必须创建一个类型并从第一次查询返回该类型的新实例。您不能将匿名对象传递给方法。您必须创建一个类型并从第一次查询返回该类型的新实例。泛型将完成所有这些操作或者你 var query = (from material in dataContext.Materials join materialCategories in dataContext.MaterialCategories on material.Id equals

您不能将匿名对象传递给方法。您必须创建一个类型并从第一次查询返回该类型的新实例。

您不能将匿名对象传递给方法。您必须创建一个类型并从第一次查询返回该类型的新实例。

泛型将完成所有这些操作或者你

var query = (from material in dataContext.Materials
             join materialCategories in dataContext.MaterialCategories on material.Id equals
             materialCategories.Material.Id
             select new
                    {
                        material.Id,
                        material.Name,
                        material.Taken,
                        materialCategories.CategoryName
                    });
//Filter by date
query = query.Where(x => x.Taken >= minDate && x.Taken <= maxDate);
publicIQueryable中间数据(IQueryable查询、DateTime maxdate、DateTime mindate),其中T:YourClass
{

返回query.Where(x=>x.take>=minDate&&x.take泛型将为您完成所有这些

var query = (from material in dataContext.Materials
             join materialCategories in dataContext.MaterialCategories on material.Id equals
             materialCategories.Material.Id
             select new
                    {
                        material.Id,
                        material.Name,
                        material.Taken,
                        materialCategories.CategoryName
                    });
//Filter by date
query = query.Where(x => x.Taken >= minDate && x.Taken <= maxDate);
publicIQueryable中间数据(IQueryable查询、DateTime maxdate、DateTime mindate),其中T:YourClass
{

return query.Where(x=>x.take>=minDate&&x.take您真的不想这样做。将查询保留在LINQ语法中可以让框架优化数据查询。如果将其提取到函数中,则必须从数据库返回所有数据,然后对客户端进行过滤。哎呀!有关更多信息,请参阅“为什么要将LINQ-to-SQL查询表达式转换为表达式树?”在中,您确实不想这样做。将查询保留为LINQ语法可以让框架优化数据查询。如果将其提取到函数中,则必须从数据库返回所有数据,然后对客户端进行筛选。哇!有关更多信息,请参阅”为什么要将LINQ到SQL查询表达式转换为表达式树?

中需要使用命名类型而不是未命名类型。 创建一个新类:

public IQueryable<T> betweenDates<T>(IQueryable<T> query, DateTime maxdate, DateTime mindate) where T : YourClass
{
  return query.Where(x => x.Taken >= minDate && x.Taken <= maxDate);
}
如果需要,可以将字段设置为属性

而不是:

public class Category
{
    int Id;
    string Name;
    DateTime Taken;
    string CategoryName;
}
使用你的课堂:

select new {...}
然后你就可以吃这个了:

select new Category {...}
专用IQueryable筛选器函数(IQueryable查询)
{

query=query.Where(x=>x.take>=minDate&&x.take您需要使用命名类型而不是未命名类型。 创建一个新类:

public IQueryable<T> betweenDates<T>(IQueryable<T> query, DateTime maxdate, DateTime mindate) where T : YourClass
{
  return query.Where(x => x.Taken >= minDate && x.Taken <= maxDate);
}
如果需要,可以将字段设置为属性

而不是:

public class Category
{
    int Id;
    string Name;
    DateTime Taken;
    string CategoryName;
}
使用你的课堂:

select new {...}
然后你就可以吃这个了:

select new Category {...}
专用IQueryable筛选器函数(IQueryable查询)
{

query=query.Where(x=>x.take>=minDate&&x.take你不能在没有反射的黑客攻击的情况下对匿名对象执行此操作。我将创建一个具有这些属性的类并从函数返回IENumerable。

你不能在没有反射的黑客攻击的情况下对匿名对象执行此操作。我将创建一个具有这些属性并返回IENumerab的类从函数中删除对象。

您需要将对象提升为真实类型,而不是异常类型,然后您可以执行以下操作:

private IQueryable<Category> FilterFunction(IQueryable<Category> query)
{
    query = query.Where(x => x.Taken >= minDate && x.Taken <= maxDate);
    return query;
}
private静态Func谓词(DateTime minDate,DateTime maxDate)
{

return x=>x.take>=minDate&&x.take您需要将对象提升为真实类型,而不是异常类型,然后您可以执行以下操作:

private IQueryable<Category> FilterFunction(IQueryable<Category> query)
{
    query = query.Where(x => x.Taken >= minDate && x.Taken <= maxDate);
    return query;
}
private静态Func谓词(DateTime minDate,DateTime maxDate)
{

return x=>x.taked>=minDate&&x.taked首先自己做一些研究?lambda是函数,这意味着您已经几乎提取了其中的内容。最后的步骤非常简单,因此显然您没有尝试&没有编写您作为示例显示的代码首先自己做一些研究?lambda是函数,这意味着最后的步骤非常简单,显然你还没有尝试&没有编写你作为示例展示的代码是的,需要将它与其他人提供的答案结合起来,形成一个非匿名类,或者你可以提供一个从t中提取日期时间的函数,但在这一点上,function的调用不会比它设计用来替换的方法简单得多。是的,需要将它与其他人提供的答案结合起来,形成一个非匿名类,或者你可以提供一个从t中提取日期时间的函数,但在这一点上,函数调用起来不会比它设计用来替换的方法简单得多。我s在枚举结果之前,不会执行任何DB查询。在LINQ查询成为SQL查询之前,您可以对其应用任何筛选。@Maciej-如果该筛选是函数调用,则不会-框架只能在表达式树上发挥神奇的作用。试试看!(然后更改您的投票:)Robert,很抱歉,您错了。我已检查。在SQL Server停止的情况下运行此操作:ProjectEntities db=new ProjectEntities();IQueryable query=from usr in db。用户选择usr;query=query.Where(u=>u.UserName==“Smith”);if(query.Count()>0)return;它将在Count之前失败。在枚举结果之前,不会执行任何DB查询。在LINQ查询成为SQL查询之前,您可以对其应用任何筛选。@Maciej-如果该筛选器是函数调用,则不会-框架只能在表达式树上发挥神奇的作用。试试看!(然后更改投票:)Robert,很抱歉,你错了。我已经检查过了。在SQL Server停止的情况下运行此操作:ProjectEntities db=new ProjectEntities();IQueryable query=from usr in db。用户选择usr;query=query。其中(u=>u.UserName==“Smith”);如果(query.Count()>0)返回;它将在Count之前失败。