C# 将字段名传递给linq查询

C# 将字段名传递给linq查询,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,在类似这样的方法中: public List<Teachers> GetEligibleTeachers(string fieldname) { var query = from t in this.Context.Teachers // some more joins and logic , etc.. where t.custom_field == true // .... rest of the query } p

在类似这样的方法中:

public List<Teachers> GetEligibleTeachers(string fieldname)
{
  var query = from t in this.Context.Teachers
              // some more joins and logic , etc..
              where t.custom_field == true
 // .... rest of the query
}
public List<Teachers> GetEligibleTeachers(Func<Teachers, bool> predicate)
{
  var query = this.Context.Teachers.Where(predicate);
 // .... rest of the query
}
var result = GetEligibleTeachers(t => t.SomeField == "SomeValue");
公共列表GetEligibleTech(字符串字段名)
{
var query=来自this.Context.Teachers中的t
//还有一些连接和逻辑等等。。
其中t.custom_字段==true
//……查询的其余部分
}

我已将where子句中的字段名称硬编码为
自定义_字段
,但是否有办法将其作为参数传递给我的方法?例如,可以有
a.custom\u字段、a.field2、a.teahcer\u id等…

您可以使用以下内容:

public List<Teachers> GetEligibleTeachers(string fieldname)
{
  var query = from t in this.Context.Teachers
              // some more joins and logic , etc..
              where t.custom_field == true
 // .... rest of the query
}
public List<Teachers> GetEligibleTeachers(Func<Teachers, bool> predicate)
{
  var query = this.Context.Teachers.Where(predicate);
 // .... rest of the query
}
var result = GetEligibleTeachers(t => t.SomeField == "SomeValue");

您可以使用以下内容:

public List<Teachers> GetEligibleTeachers(string fieldname)
{
  var query = from t in this.Context.Teachers
              // some more joins and logic , etc..
              where t.custom_field == true
 // .... rest of the query
}
public List<Teachers> GetEligibleTeachers(Func<Teachers, bool> predicate)
{
  var query = this.Context.Teachers.Where(predicate);
 // .... rest of the query
}
var result = GetEligibleTeachers(t => t.SomeField == "SomeValue");

您可以使用以下内容:

public List<Teachers> GetEligibleTeachers(string fieldname)
{
  var query = from t in this.Context.Teachers
              // some more joins and logic , etc..
              where t.custom_field == true
 // .... rest of the query
}
public List<Teachers> GetEligibleTeachers(Func<Teachers, bool> predicate)
{
  var query = this.Context.Teachers.Where(predicate);
 // .... rest of the query
}
var result = GetEligibleTeachers(t => t.SomeField == "SomeValue");

您可以使用以下内容:

public List<Teachers> GetEligibleTeachers(string fieldname)
{
  var query = from t in this.Context.Teachers
              // some more joins and logic , etc..
              where t.custom_field == true
 // .... rest of the query
}
public List<Teachers> GetEligibleTeachers(Func<Teachers, bool> predicate)
{
  var query = this.Context.Teachers.Where(predicate);
 // .... rest of the query
}
var result = GetEligibleTeachers(t => t.SomeField == "SomeValue");

您可以通过如下方式创建一个更高阶的函数(请参见

public List<Teachers> GetTeachers()
{
    return GetEligibleTeachers(x => x.fieldname);
}

public List<Teachers> GetEligibleTeachers(Func<Teachers, bool> elementIdentity)
{
   var query = Context.Teachers.Where(elementIdentity == true) // rest of query
}
public List GetTeachers()
{
返回getEligibleTech(x=>x.fieldname);
}
公共列表GetEligibleTech(Func elementIdentity)
{
var query=Context.Teachers.Where(elementIdentity==true)//查询的其余部分
}

您可以通过创建一个更高阶的函数(请参见)来实现这一点

public List<Teachers> GetTeachers()
{
    return GetEligibleTeachers(x => x.fieldname);
}

public List<Teachers> GetEligibleTeachers(Func<Teachers, bool> elementIdentity)
{
   var query = Context.Teachers.Where(elementIdentity == true) // rest of query
}
public List GetTeachers()
{
返回getEligibleTech(x=>x.fieldname);
}
公共列表GetEligibleTech(Func elementIdentity)
{
var query=Context.Teachers.Where(elementIdentity==true)//查询的其余部分
}

您可以通过创建一个更高阶的函数(请参见)来实现这一点

public List<Teachers> GetTeachers()
{
    return GetEligibleTeachers(x => x.fieldname);
}

public List<Teachers> GetEligibleTeachers(Func<Teachers, bool> elementIdentity)
{
   var query = Context.Teachers.Where(elementIdentity == true) // rest of query
}
public List GetTeachers()
{
返回getEligibleTech(x=>x.fieldname);
}
公共列表GetEligibleTech(Func elementIdentity)
{
var query=Context.Teachers.Where(elementIdentity==true)//查询的其余部分
}

您可以通过创建一个更高阶的函数(请参见)来实现这一点

public List<Teachers> GetTeachers()
{
    return GetEligibleTeachers(x => x.fieldname);
}

public List<Teachers> GetEligibleTeachers(Func<Teachers, bool> elementIdentity)
{
   var query = Context.Teachers.Where(elementIdentity == true) // rest of query
}
public List GetTeachers()
{
返回getEligibleTech(x=>x.fieldname);
}
公共列表GetEligibleTech(Func elementIdentity)
{
var query=Context.Teachers.Where(elementIdentity==true)//查询的其余部分
}


并非没有反射。你愿意走那么远吗?你应该调查一下。您可能会发现a非常有用。只要您知道调用函数中的字段名,就不需要反射,您可以使用谓词来表示this@GayotFow类似雷鬼音乐的回答?请阅读我贴在那里的评论。不是没有思考。你愿意走那么远吗?你应该调查一下。您可能会发现a非常有用。只要您知道调用函数中的字段名,就不需要反射,您可以使用谓词来表示this@GayotFow类似雷鬼音乐的回答?请阅读我贴在那里的评论。不是没有思考。你愿意走那么远吗?你应该调查一下。您可能会发现a非常有用。只要您知道调用函数中的字段名,就不需要反射,您可以使用谓词来表示this@GayotFow类似雷鬼音乐的回答?请阅读我贴在那里的评论。不是没有思考。你愿意走那么远吗?你应该调查一下。您可能会发现a非常有用。只要您知道调用函数中的字段名,就不需要反射,您可以使用谓词来表示this@GayotFow类似雷鬼音乐的回答?请阅读我在那里发布的评论。一个大问题:x.fieldname:fieldname不是教师表的成员。请注意,我有一组连接,它位于其他一个表上。我想您需要反射树或表达式树,这超出了我的范围expertise@DevWannaBe-如果联接总是相同的,则只需使用
Func
即可。一个大问题:x.fieldname:fieldname不是表的成员。请注意,我有一组连接,它位于其他一个表上。我想您需要反射树或表达式树,这超出了我的范围expertise@DevWannaBe-如果联接总是相同的,则只需使用
Func
即可。一个大问题:x.fieldname:fieldname不是表的成员。请注意,我有一组连接,它位于其他一个表上。我想您需要反射树或表达式树,这超出了我的范围expertise@DevWannaBe-如果联接总是相同的,则只需使用
Func
即可。一个大问题:x.fieldname:fieldname不是表的成员。请注意,我有一组连接,它位于其他一个表上。我想您需要反射树或表达式树,这超出了我的范围expertise@DevWannaBe-如果连接总是相同的,则只需使用
Func