C# 芬德尔多重条件
所以我尝试使用FindAll返回匹配对象的列表。例如,当我只使用一个条件时,它非常有效C# 芬德尔多重条件,c#,C#,所以我尝试使用FindAll返回匹配对象的列表。例如,当我只使用一个条件时,它非常有效 patientstatus = statuslist.FindAll(delegate(StatusReader.onestatus p1) { return p1.WL_ID == patlist[i].wl_id; }); 但是我想使用多个条件,其中一些包含if语句,我不知道如何使用。似乎该格式需要一个return语句,并且该示例来自Microsoft(http://msdn.microsoft.
patientstatus = statuslist.FindAll(delegate(StatusReader.onestatus p1)
{
return p1.WL_ID == patlist[i].wl_id;
});
但是我想使用多个条件,其中一些包含if语句,我不知道如何使用。似乎该格式需要一个return语句,并且该示例来自Microsoft(http://msdn.microsoft.com/en-us/library/fh1w7y8z.aspx)只使用一个条件
我可以为每个条件使用多个FindAll方法,也可以自己创建一个循环来扫描所有值,但肯定有一点我没有,对吧?我不太确定“if loops”是什么,但您可以将它们缝合在一起:
patientstatus = statuslist.FindAll(delegate(StatusReader.onestatus p1)
{
if(p1.WL_ID != patlist[i].wl_id)
return false;
if(otherStuff != 5)
return false;
for(var x in p1.stuff)
if(x == 7)
return false;
return true;
});
我不太确定“如果循环”是什么,但您可以将它们缝合在一起:
patientstatus = statuslist.FindAll(delegate(StatusReader.onestatus p1)
{
if(p1.WL_ID != patlist[i].wl_id)
return false;
if(otherStuff != 5)
return false;
for(var x in p1.stuff)
if(x == 7)
return false;
return true;
});
请尝试以下操作:
var patientStatus = statusList.Where(p => p
{
// Put in logic here as you need
return p.WL_ID == patlist[i].wl_id || p.YourSecondProperty == WhateverYouWantToCheck;
}
请尝试以下操作:
var patientStatus = statusList.Where(p => p
{
// Put in logic here as you need
return p.WL_ID == patlist[i].wl_id || p.YourSecondProperty == WhateverYouWantToCheck;
}
你可以考虑像这样的事情
public abstract class Condition
{
public abstract bool Sutisfied(StatusReader.onestatus status);
}
public class Condition1 : Condition
{
public override bool Sutisfied(StatusReader.onestatus status) {
//check for something and return
}
}
public class Condition2 : Condition
{
public override bool Sutisfied(StatusReader.onestatus status) {
//check for something and return
}
}
之后可以有一个条件列表,如
List<Condition> conditions =
new List<Condition>{new Conditon1(), new Condition2()}
你可以考虑像这样的事情
public abstract class Condition
{
public abstract bool Sutisfied(StatusReader.onestatus status);
}
public class Condition1 : Condition
{
public override bool Sutisfied(StatusReader.onestatus status) {
//check for something and return
}
}
public class Condition2 : Condition
{
public override bool Sutisfied(StatusReader.onestatus status) {
//check for something and return
}
}
之后可以有一个条件列表,如
List<Condition> conditions =
new List<Condition>{new Conditon1(), new Condition2()}
您的代理只需在与您的条件匹配时返回true,在与您的条件不匹配时返回false。它不必是单行返回语句。您可以在委托中创建布尔值、if语句、for循环以及任何其他您想要的内容,只要它沿所有代码路径返回true或false 因此,您可以根据需要执行任意多个if语句或循环 如果你真的想把它保持为一行,你可以做如下的事情
return (condition1 == condition1) || (condition2 == condition2) || (condition3 == condition3);
您的代理只需在与您的条件匹配时返回true,在与您的条件不匹配时返回false。它不必是单行返回语句。您可以在委托中创建布尔值、if语句、for循环以及任何其他您想要的内容,只要它沿所有代码路径返回true或false 因此,您可以根据需要执行任意多个if语句或循环 如果你真的想把它保持为一行,你可以做如下的事情
return (condition1 == condition1) || (condition2 == condition2) || (condition3 == condition3);
一个委托主体可以包含多个语句;e、 g.
if(p1.PropertyXYZ==17)返回false;返回p1.WL\u ID==patlist[i].WL\u ID
oops对不起,这意味着if语句可能包含多个语句;e、 g.if(p1.PropertyXYZ==17)返回false;返回p1.WL\u ID==patlist[i].WL\u ID代码>哦对不起,意思是如果语句哈哈