Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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查询仅返回数组的第一项_C#_Linq - Fatal编程技术网

C# Linq查询仅返回数组的第一项

C# Linq查询仅返回数组的第一项,c#,linq,C#,Linq,让字符串项目等于“p1,p2,p3”,并且在数据库中,每个项目的标识符如下所示:p1=1,p2=2,p3=3。在我的查询中只返回列表中的第一个项目,你知道为什么吗 private List<int> getProjects(string projects) { String[] projectArray = projects.Split(','); QMOIIEntities db = new QMOIIEntities();

让字符串项目等于“p1,p2,p3”,并且在数据库中,每个项目的标识符如下所示:p1=1,p2=2,p3=3。在我的查询中只返回列表中的第一个项目,你知道为什么吗

private List<int> getProjects(string projects)
    {

        String[] projectArray = projects.Split(',');

        QMOIIEntities db = new QMOIIEntities();

        var projectList = db.wbs_projects
          .Where(x => projectArray.Contains(x.prjName))
          .Select(x => x.prjID).ToList();

        return projectList;
    }


下面的代码使用了您在问题中提到的相同逻辑。我创建了虚拟数据。代码的行为符合预期,即输出是对应于每个prjName的prjID

void Main()
{
    string projects = "p1,p2,p3";
    List<string> projectArray = projects.Split(',').ToList();

    TestEntities db = new TestEntities();
    db.wbs_projects = new List<TestEntities>();
    db.wbs_projects.Add(new TestEntities(){prjName = "p1",prjID="Test1"});
    db.wbs_projects.Add(new TestEntities(){prjName = "p2",prjID="Test2"});
    db.wbs_projects.Add(new TestEntities(){prjName = "p3",prjID="Test3"});

    var projectList = db.wbs_projects
      .Where(x => projectArray.Contains(x.prjName))
      .Select(x => x.prjID).ToList();

    foreach(var item in projectList)
    {
        Console.WriteLine(item);//Test1,Test2,Test3
    }

}

public class TestEntities
{   
    public List<TestEntities> wbs_projects{get;set;}

    public string prjName{get;set;}
    public string prjID{get;set;}
}
void Main()
{
string projects=“p1、p2、p3”;
List projectArray=projects.Split(',').ToList();
TestEntities db=新的TestEntities();
db.wbs_projects=新列表();
添加(newtestentities(){prjName=“p1”,prjID=“Test1”});
添加(newtestentities(){prjName=“p2”,prjID=“Test2”});
添加(newtestentities(){prjName=“p3”,prjID=“Test3”});
var projectList=db.wbs\u项目
.Where(x=>projectArray.Contains(x.prjName))
.Select(x=>x.prjID).ToList();
foreach(项目列表中的变量项)
{
Console.WriteLine(item);//Test1、Test2、Test3
}
}
公共类测试
{   
公共列表wbs_项目{get;set;}
公共字符串prjName{get;set;}
公共字符串prjID{get;set;}
}

以下代码使用了您在问题中提到的相同逻辑。我创建了虚拟数据。代码的行为符合预期,即输出是对应于每个prjName的prjID

void Main()
{
    string projects = "p1,p2,p3";
    List<string> projectArray = projects.Split(',').ToList();

    TestEntities db = new TestEntities();
    db.wbs_projects = new List<TestEntities>();
    db.wbs_projects.Add(new TestEntities(){prjName = "p1",prjID="Test1"});
    db.wbs_projects.Add(new TestEntities(){prjName = "p2",prjID="Test2"});
    db.wbs_projects.Add(new TestEntities(){prjName = "p3",prjID="Test3"});

    var projectList = db.wbs_projects
      .Where(x => projectArray.Contains(x.prjName))
      .Select(x => x.prjID).ToList();

    foreach(var item in projectList)
    {
        Console.WriteLine(item);//Test1,Test2,Test3
    }

}

public class TestEntities
{   
    public List<TestEntities> wbs_projects{get;set;}

    public string prjName{get;set;}
    public string prjID{get;set;}
}
void Main()
{
string projects=“p1、p2、p3”;
List projectArray=projects.Split(',').ToList();
TestEntities db=新的TestEntities();
db.wbs_projects=新列表();
添加(newtestentities(){prjName=“p1”,prjID=“Test1”});
添加(newtestentities(){prjName=“p2”,prjID=“Test2”});
添加(newtestentities(){prjName=“p3”,prjID=“Test3”});
var projectList=db.wbs\u项目
.Where(x=>projectArray.Contains(x.prjName))
.Select(x=>x.prjID).ToList();
foreach(项目列表中的变量项)
{
Console.WriteLine(item);//Test1、Test2、Test3
}
}
公共类测试
{   
公共列表wbs_项目{get;set;}
公共字符串prjName{get;set;}
公共字符串prjID{get;set;}
}

这似乎是一个与数据相关的问题。你能给出db.wbs_项目外观的示例数据吗?你的缩进非常混乱-最好将
包含的
调用与
Where
调用放在同一行,因为它是它的一部分,而不是它的对等部分,这就是你的格式使它看起来像什么。你有没有三次检查
projectArray
是否包含你认为它的功能?Db也是如此
P2
P2
而不是
P2
就可以了。请注意,如果您将变量声明为List,那么请不要将其称为“projectArray”。@crocaduck81:您检查了正在执行的SQL吗?这看起来像是一个与数据相关的问题。你能给出db.wbs_项目外观的示例数据吗?你的缩进非常混乱-最好将
包含的
调用与
Where
调用放在同一行,因为它是它的一部分,而不是它的对等部分,这就是你的格式使它看起来像什么。你有没有三次检查
projectArray
是否包含你认为它的功能?Db也是如此
P2
P2
而不是
P2
就可以了。更简单的是,如果您将变量声明为List,那么请不要将其称为“projectArray”。@crocaduck81:您检查了正在执行的SQL吗?感谢您测试代码,让我检查了字符串,并在其中发现了空格,上面更新了…这是字符串返回的方式,类似于“p1,p2,p3”,所以我必须对其进行修剪。感谢测试代码,让我检查字符串,发现其中有空格,上面更新了…这是字符串返回的方式,类似于“p1,p2,p3”,所以我必须对其进行修剪。
void Main()
{
    string projects = "p1,p2,p3";
    List<string> projectArray = projects.Split(',').ToList();

    TestEntities db = new TestEntities();
    db.wbs_projects = new List<TestEntities>();
    db.wbs_projects.Add(new TestEntities(){prjName = "p1",prjID="Test1"});
    db.wbs_projects.Add(new TestEntities(){prjName = "p2",prjID="Test2"});
    db.wbs_projects.Add(new TestEntities(){prjName = "p3",prjID="Test3"});

    var projectList = db.wbs_projects
      .Where(x => projectArray.Contains(x.prjName))
      .Select(x => x.prjID).ToList();

    foreach(var item in projectList)
    {
        Console.WriteLine(item);//Test1,Test2,Test3
    }

}

public class TestEntities
{   
    public List<TestEntities> wbs_projects{get;set;}

    public string prjName{get;set;}
    public string prjID{get;set;}
}