C# Linq查询仅返回数组的第一项
让字符串项目等于“p1,p2,p3”,并且在数据库中,每个项目的标识符如下所示:p1=1,p2=2,p3=3。在我的查询中只返回列表中的第一个项目,你知道为什么吗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();
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;}
}