功能评估已禁用,在VS 2015中查询LinQ执行时出错?

时间:2018-07-14 08:32:31

标签: c# arrays list linq c#-4.0

我运行以下代码:

var output = from data in myDataList 
             from engName in dtarrennames 
             from pename in dtarrpenames 
             where data.exactName == engName 
             select pename;

我们有两个字符串数组dtarrennames, dtarrpenames,并且要提取pename,以便从engName == data.exactName中提取myDataList

当对此进行调试并单击以查看结果时,得到通常的错误function evaluation disabled.

更新1:

dtarrpenamesdtarrennames是一维字符串数组,而myDataList是类的数组

我试着这样:

var output = from data in myDataList
             join engName in dtarrennames
             on data.exactName equals engName
             join pename in dtarrpenames       
             on engName equals pename
             select new { pename, engName };

但没有输出。

更新2:

这是我的结构:

class MyData
{
    public string exactName = "";
    public string Id = "";
}

string[] dtarrennames = new string[] { "enn1", "enn2", "enn3" };
string[] dtarrpenames=new string[] { "pen1","pen2","pen3" };
MyData[] myDataList = new MyData[n] {...};

该如何解决?

1 个答案:

答案 0 :(得分:1)

假设dtarrennames和dtarrpenames具有id和Name属性,则应该可以进行以下操作。     var输出=来自myDataList中的数据                  在dtarrennames中加入engName                  在data.exactName上等于engName.Name                  在dtarrpenames中加入pename                  在engName.Id上等于pename.Id                  选择新的{pename,engName}; 编辑: 以下应根据更新后的问题工作。         string [] dtarrennames =新的string [] {“ enn1”,“ enn2”,“ enn3”};         string [] dtarrpenames = new string [] {“ pen1”,“ pen2”,“ pen3”};         var values = dtarrennames.Zip(dtarrpenames,(x,y)=> new {dtarrenpenames = x,dtarrpename = y});         MyData [] myDataList = new MyData [1] {new MyData {确切名称=“ enn1”,Id =“ 3”}};         var输出=(来自myDataList中的数据                      将engName加入值                      在data.exactName上等于engName.dtarrenname                      选择engName).ToList(); 输出将包含具有两个属性的对象列表dtarrenname,dtarrpename。