c#相当于sql';s";其中的值为(';a';,';b';,';c';)”;

c#相当于sql';s";其中的值为(';a';,';b';,';c';)”;,c#,asp.net,gridview,C#,Asp.net,Gridview,我基本上需要根据某些值更改Gridview的行颜色。以下是我所拥有的: if ((String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "A" || (String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "B" || (String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "C") { e.Row.BackColor = Color.Ye

我基本上需要根据某些值更改Gridview的行颜色。以下是我所拥有的:

if ((String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "A" || (String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "B" || (String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "C")
{
    e.Row.BackColor = Color.Yellow;
}
我正在寻找一种更清晰(或者说更好)的方法,类似于sql中的方法,而不必使用| |运算符:

IF STATUS in('A','B','C')
使用LINQ,例如:

如果要忽略案例,则:

if (new[] {"A", "B", "C"}
    .Contains((String) DataBinder.Eval(e.Row.DataItem, "STATUS"),
        StringComparer.InvariantCultureIgnoreCase))
{

}
使用LINQ,例如:

如果要忽略案例,则:

if (new[] {"A", "B", "C"}
    .Contains((String) DataBinder.Eval(e.Row.DataItem, "STATUS"),
        StringComparer.InvariantCultureIgnoreCase))
{

}

您可以尝试为此任务使用set, 如果它在运行时不会更改,则静态构建它 或者动态构建它:

var statuses = new HashSet<string>
{
    "A",
    "B",
    "C"
}

您可以尝试为此任务使用set, 如果它在运行时不会更改,则静态构建它 或者动态构建它:

var statuses = new HashSet<string>
{
    "A",
    "B",
    "C"
}

实现目标的一种方法是创建一个项目的临时
列表
,并在条件列表中使用
列表
包含
方法:

var yellowStatuses = new List<string> { "A", "B", "C" };
var currentStatus = (String)DataBinder.Eval(e.Row.DataItem, "STATUS");
if (yellowStatuses.Contains(currentStatus))
    e.Row.BackColor = Color.Yellow;
var yellowstatus=新列表{“A”、“B”、“C”};
var currentStatus=(字符串)DataBinder.Eval(e.Row.DataItem,“STATUS”);
if(黄色状态包含(当前状态))
e、 Row.BackColor=Color.Yellow;

编辑:@Habib比我先找到答案,而且更干净。:)

实现目标的一种方法是创建项目的临时
列表
,并在条件列表中使用
列表
包含
方法:

var yellowStatuses = new List<string> { "A", "B", "C" };
var currentStatus = (String)DataBinder.Eval(e.Row.DataItem, "STATUS");
if (yellowStatuses.Contains(currentStatus))
    e.Row.BackColor = Color.Yellow;
var yellowstatus=新列表{“A”、“B”、“C”};
var currentStatus=(字符串)DataBinder.Eval(e.Row.DataItem,“STATUS”);
if(黄色状态包含(当前状态))
e、 Row.BackColor=Color.Yellow;

编辑:@Habib比我先找到答案,而且更干净。:)

这不是实现这一点的最佳方式,但我认为这个linq查询可以帮助您

if ((new string[] {"A","B","C"}).Any(x=>x==(String)DataBinder.Eval(e.Row.DataItem, "STATUS")))

这不是实现这一点的最佳方式,但我认为这个linq查询可以帮助您

if ((new string[] {"A","B","C"}).Any(x=>x==(String)DataBinder.Eval(e.Row.DataItem, "STATUS")))

您可以使用字典方法进行此操作。很好的一点是,您只需将它维护在一个逻辑可以集中的地方

var colorStatus = new Dictionary<string,Color>();
colorStatus["A"] = Color.Yellow;
colorStatus["B"] = Color.Yellow;
colorStatus["C"] = Color.Yellow;

您可以使用字典方法进行此操作。很好的一点是,您只需将它维护在一个逻辑可以集中的地方

var colorStatus = new Dictionary<string,Color>();
colorStatus["A"] = Color.Yellow;
colorStatus["B"] = Color.Yellow;
colorStatus["C"] = Color.Yellow;

正是我想要的。一定要和林克的事扯上关系!正是我想要的。一定要和林克的事扯上关系!