C# 循环实体框架时如何检查数据?
我使用实体框架,我有一个表。数据是C# 循环实体框架时如何检查数据?,c#,entity-framework,foreach,C#,Entity Framework,Foreach,我使用实体框架,我有一个表。数据是 Code Check Num C1 true 10 C1 false 20 C2 true 15 C1 false 15 C1 true 15 C1 true 20 C2 false 10 好的,我将按code=“C1”筛选数据,并找到一行Check=“true”和Num=“15”。我使用的代码如下: var list = db.PRODUCT
Code Check Num
C1 true 10
C1 false 20
C2 true 15
C1 false 15
C1 true 15
C1 true 20
C2 false 10
好的,我将按code=“C1”筛选数据,并找到一行Check=“true”和Num=“15”。我使用的代码如下:
var list = db.PRODUCTes.Where(e=>e.Code == C1);
var flag=0;
foreach (var item in list)
{
if (list.Select(e => e.Check).SingleOrDefault() == true && list.Select(e => e.Num).SingleOrDefault() == 15)
{
flag = 1;
}
else
flag = 2;
}
return flag;
当我运行它时,flag的值是2。我认为它不起作用。之所以发生这种情况,是因为您在检测到想要的值后继续迭代,导致将flag的值重置为2。您应该在找到值后中断:
if (list.Select(e => e.Check).SingleOrDefault() == true && list.Select(e => e.Num).SingleOrDefault() == 15)
{
flag = 1;
break;
}
之所以会发生这种情况,是因为您在检测到想要的值后继续迭代,从而将flag的值重置为2。您应该在找到值后中断:
if (list.Select(e => e.Check).SingleOrDefault() == true && list.Select(e => e.Num).SingleOrDefault() == 15)
{
flag = 1;
break;
}
为什么不使用可枚举的
那个?是C#中的条件运算符。了解它。为什么不使用可枚举的Any
那个?是C#中的条件运算符。请阅读相关内容。如果我理解正确,您希望检查您的列表中是否有任何项目已选中“true”和num=“15”。您可以使用以下代码执行此操作:
var list = db.PRODUCTes.Where(e=>e.Code == C1);
if(list.Any(e => e.Check == true && e.Num == "15"))
return 1;
return 2;
之前失败的原因是,由于foreach循环,您覆盖了flag变量。如果我理解正确,您希望检查列表中是否有任何项具有check'true'和num='15'。您可以使用以下代码执行此操作:
var list = db.PRODUCTes.Where(e=>e.Code == C1);
if(list.Any(e => e.Check == true && e.Num == "15"))
return 1;
return 2;
早些时候它失败的原因是因为foreach循环覆盖了flag变量。我怀疑您的代码在
.SingleOrDefault()
中是否会引发异常。您的列表。Select(e=>e.Check)
肯定有多个项,因此SingleOrDefault
将引发异常。奇怪的是,你没有例外?下次在描述你所做的事情时请诚实,在运行它时听到这个消息是很可笑的,flag的值是2,与你发布的内容一致。你为什么使用foreach循环?我这样问是因为我在任何地方都没有看到“item”…我怀疑您的代码在.SingleOrDefault()
中是否会抛出异常。您的列表。Select(e=>e.Check)
肯定有多个项,因此SingleOrDefault
将引发异常。奇怪的是,你没有例外?下次在描述你所做的事情时请诚实,在运行它时听到这个消息是很可笑的,flag的值是2,与你发布的内容一致。你为什么使用foreach循环?我这么问是因为我没有在任何地方看到“物品”。。。