Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# C语言中列表选择的谓词问题#_C#_.net_Lambda_Predicate - Fatal编程技术网

C# C语言中列表选择的谓词问题#

C# C语言中列表选择的谓词问题#,c#,.net,lambda,predicate,C#,.net,Lambda,Predicate,我有一个curry类型的Lambda表达式,我希望它能够执行选择并派生一个惟一的元素。遗憾的是,存在一个运行时异常 代码如下: Entities relation = queryType( "test-instances", (new KeyValuePair<String, String>("cycle-id", testSetID)) ); Entity target = (relation.entities.To

我有一个curry类型的Lambda表达式,我希望它能够执行选择并派生一个惟一的元素。遗憾的是,存在一个运行时异常

代码如下:

Entities relation = queryType(
            "test-instances",
            (new KeyValuePair<String, String>("cycle-id", testSetID))
        );

Entity target = (relation.entities.ToList<Entity>()).Find(
            //select entity with field 'name'
            e => (e.fields.Find(
                //and with non-epsillon value
                f => !(f.values.Find(
                    //of value 'targetValue'
                    v => (v.value.Equals(targetValue))
                ).value.Equals(""))
            )).name.Equals("name")
        );
函数
parsePredicate()
获取对(),并将它们编码为服务器理解的语言的谓词

例外情况是在最内部的函数中;绑定变量
v
作为
null
应用
e
to
f
虽然有效,但我使用的数据模型是可靠的

有什么想法吗

以下是
实体的类

public class Entities
{
    public List<Entity> entities{get;set;}

    public long totalResults{get;set;}

    public Entities(){entities = new List<Entity>();}
}


public class Entity
{
    public List<Field> fields { get; set; }

    public Entity() { fields = new List<Field>(); }
}

public class Field
{
    public String name { get; set; }


    public List<Value> values { get; set; }

    public Field() { values = new List<Value>(); }
}


public class Value
{
    public String value{get;set;}
}
公共类实体
{
公共列表实体{get;set;}
公共长totalResults{get;set;}
公共实体(){Entities=new List();}
}
公共类实体
{
公共列表字段{get;set;}
公共实体(){fields=new List();}
}
公共类字段
{
公共字符串名称{get;set;}
公共列表值{get;set;}
公共字段(){values=new List();}
}
公共阶级价值
{
公共字符串值{get;set;}
}

如果没有完整的示例,很难判断发生了什么。我个人会使用LINQ而不是列表。请注意,查找…@JonSkeet观察AMMENDENT;关系的类型为Entities这仍然不是一个。我们不能仅仅从这件事上重现这个问题。(您确定问题不在于
relation.entities.ToList()
返回的实体没有填写字段值吗?@JonSkeet是的,我确定。如果我展示了这个关系是如何推导出来的,它是否完整?为什么你们不能提供一个完整的例子?我看不出用硬编码数据(不一定是真实数据)创建一个示例并显示代码失败有什么困难。作为诊断工作的一部分,你很可能会自己找到答案。(顺便说一句,我强烈建议您也开始遵循.NET命名约定。)
public class Entities
{
    public List<Entity> entities{get;set;}

    public long totalResults{get;set;}

    public Entities(){entities = new List<Entity>();}
}


public class Entity
{
    public List<Field> fields { get; set; }

    public Entity() { fields = new List<Field>(); }
}

public class Field
{
    public String name { get; set; }


    public List<Value> values { get; set; }

    public Field() { values = new List<Value>(); }
}


public class Value
{
    public String value{get;set;}
}