C# 在某些情况下如何隐藏部分数据表?
如何在某些情况下通过LINQ隐藏part o数据表 如果我有这样一个数据表C# 在某些情况下如何隐藏部分数据表?,c#,asp.net,linq,datatable,C#,Asp.net,Linq,Datatable,如何在某些情况下通过LINQ隐藏part o数据表 如果我有这样一个数据表 id name flag value dep hours 1 aa 0 20 3 22 2 bb 1 35 47 5 3 cc 2 77 23 7 4 aaa 0 13 98 19 5 bbb 1
id name flag value dep hours
1 aa 0 20 3 22
2 bb 1 35 47 5
3 cc 2 77 23 7
4 aaa 0 13 98 19
5 bbb 1 67 3201 2
6 ccc 2 66 452 4
现在,我想在
标志=2
时隐藏数据表的一部分,如下所示:
id name flag value dep hours
1 aa 0 20 3 22
2 bb 1 35 47 5
3 cc 2 7
4 aaa 0 13 98 19
5 bbb 1 67 3201 2
6 ccc 2 4
如前所述,
DataTable
包含数据,您不能“隐藏”它,您可以从表中删除它。当然,您可以将其隐藏在显示它的任何位置(在DataGridView
中)
你:
嗯,好吧,怎么去掉一部分而不是整行,我是说细胞
foreach(table.Rows中的数据行)
{
int flag=行字段(“标志”);
如果(标志==2)
{
row.SetField(“value”,new Nullable());
row.SetField(“dep”,new Nullable());
}
}
如注释所示,DataTable
包含数据,您不能“隐藏”它,您可以从表中删除它。当然,您可以将其隐藏在显示它的任何位置(在DataGridView
中)
你:
嗯,好吧,怎么去掉一部分而不是整行,我是说细胞
foreach(table.Rows中的数据行)
{
int flag=行字段(“标志”);
如果(标志==2)
{
row.SetField(“value”,new Nullable());
row.SetField(“dep”,new Nullable());
}
}
您还可以直接在linq上实现它。请参阅下面的示例
DataTable dt = new DataTable();
dt.Columns.Add("flag");
dt.Columns.Add("value");
dt.Columns.Add("dep");
dt.Rows.Add("0", "20", "3");
dt.Rows.Add("1", "35", "47");
dt.Rows.Add("2", "77", "23");
var myResults = from o in dt.AsEnumerable()
select new
{
flag = o.Field<string>("flag"),
value = (o.Field<string>("flag") == "1") ? string.Empty : o.Field<string>("value"),
dep = (o.Field<string>("flag") == "1") ? string.Empty : o.Field<string>("dep")
};
DataTable dt=newdatatable();
dt.列。添加(“标志”);
dt.列。添加(“值”);
dt.列。添加(“dep”);
添加(“0”、“20”、“3”);
增加(“1”、“35”、“47”);
增加(“2”、“77”、“23”);
var myResults=从0到dt.AsEnumerable()中
选择新的
{
标志=o.字段(“标志”),
value=(o.Field(“flag”)=“1”)?字符串。空:o.Field(“value”),
dep=(o.Field(“flag”)=“1”)?字符串。空:o.Field(“dep”)
};
您还可以直接在linq上实现它。请参阅下面的示例
DataTable dt = new DataTable();
dt.Columns.Add("flag");
dt.Columns.Add("value");
dt.Columns.Add("dep");
dt.Rows.Add("0", "20", "3");
dt.Rows.Add("1", "35", "47");
dt.Rows.Add("2", "77", "23");
var myResults = from o in dt.AsEnumerable()
select new
{
flag = o.Field<string>("flag"),
value = (o.Field<string>("flag") == "1") ? string.Empty : o.Field<string>("value"),
dep = (o.Field<string>("flag") == "1") ? string.Empty : o.Field<string>("dep")
};
DataTable dt=newdatatable();
dt.列。添加(“标志”);
dt.列。添加(“值”);
dt.列。添加(“dep”);
添加(“0”、“20”、“3”);
增加(“1”、“35”、“47”);
增加(“2”、“77”、“23”);
var myResults=从0到dt.AsEnumerable()中
选择新的
{
标志=o.字段(“标志”),
value=(o.Field(“flag”)=“1”)?字符串。空:o.Field(“value”),
dep=(o.Field(“flag”)=“1”)?字符串。空:o.Field(“dep”)
};
在LINQ查询中检索数据时,可以使用三元运算符,如下所示:
var data=(from table_name in DataContextName.Table_Name
select new
{
id=table_name.id,
name=table_name.name,
flag=table_name.flag,
value=(table_name.flag==2? "" : table_name.value),
dep=(table_name.flag==2? "" : table_name.dep),
hours=table_name.hours
}).ToList();
在LINQ查询中检索数据时,可以使用三元运算符,如下所示:
var data=(from table_name in DataContextName.Table_Name
select new
{
id=table_name.id,
name=table_name.name,
flag=table_name.flag,
value=(table_name.flag==2? "" : table_name.value),
dep=(table_name.flag==2? "" : table_name.dep),
hours=table_name.hours
}).ToList();
DataTable
包含数据,您不能“隐藏”它,您可以从表中删除它。当然你可以把它隐藏在任何你显示它的地方(例如在一个DataGridView
中)。@TimSchmelter:hmmm,好的,如何删除它的一部分而不是整行(我的意思是单元格
一个DataTable
包含数据,你不能“隐藏”它,你可以从表中删除它。当然,你可以把它隐藏在任何你显示它的地方(在一个DataGridView
)中。@TimSchmelter:hmmm,好的,如何删除它的一部分而不是整行(我的意思是单元格行.SetField(“value”,new Nullable());行.SetField(“dep”,new Nullable())
对吗?如何设置字符串为空值,我尝试将其设置为string.Empty
但仍有旧值!!@just\u name:它是什么类型,int
或string
?然而,我上面所展示的方法适用于int
-列,我已经对它进行了测试。如果它是一个字符串,可以指定DBNull.value
或(如果需要)String.Empty
,f.e.:row.SetField(“value”,DBNull.value);
。谢谢,我解决了我的问题:)row.SetField(“value”,new Nullable());row.SetField(“dep”,new Nullable())
对吗?如何设置字符串为空值,我尝试将其设置为string.Empty
但仍有旧值!!@just\u name:它是什么类型,int
或string
?然而,我上面所展示的方法适用于int
-列,我已经对它进行了测试。如果它是一个字符串,可以指定DBNull.value
或(如果需要)String.Empty
,f.e.:row.SetField(“value”,DBNull.value);
。谢谢,我解决了我的问题:)