Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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
.net 如何将表达式作为参数传递给LINQ查询_.net_Reflection_Lambda - Fatal编程技术网

.net 如何将表达式作为参数传递给LINQ查询

.net 如何将表达式作为参数传递给LINQ查询,.net,reflection,lambda,.net,Reflection,Lambda,我有以下几点陈述: if (mediaCode.IndexOf(',') > 0) { entries = entries.Where(c => mediaCode.Contains(c.Mediacode)); } else { entries = entries.Where(c => c.Mediacode == mediaCode); } 然后: 我想创建一个函数,在这里我只传递字符串和属性, 类似于:MethodName(contentType,c.conte

我有以下几点陈述:

if (mediaCode.IndexOf(',') > 0) {
  entries = entries.Where(c => mediaCode.Contains(c.Mediacode));
}
else {
  entries = entries.Where(c => c.Mediacode == mediaCode);
}
然后:

我想创建一个函数,在这里我只传递字符串和属性, 类似于:MethodName(contentType,c.contentType)

如何做到这一点?

使用反射(请参阅),您可以这样做:

    protected void FilterStrings(ref IEnumerable<StringStruct> entries, string contentType, string fieldName)
    {
        if (contentType.IndexOf(',') > 0)
        {
            entries = entries.Where(c => contentType.Contains(c.GetType().GetProperty(fieldName).GetValue(c, null).ToString()));
        }
        else
        {
            entries = entries.Where(c => c.GetType().GetProperty(fieldName).GetValue(c, null).ToString() == contentType);
        }
    }
FilterStrings(ref entries, mediaCode, "Mediacode");

不清楚你在问什么。是否要将Linq查询中的表达式传递给方法?e、 g:entries.Where(conditionParameter)Where conditionParameter是c=>mediaCode.Contains(value)谢谢!这就是我要找的
FilterStrings(ref entries, mediaCode, "Mediacode");