Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在某些情况下如何隐藏部分数据表?_C#_Asp.net_Linq_Datatable - Fatal编程技术网

C# 在某些情况下如何隐藏部分数据表?

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

如何在某些情况下通过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       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);
。谢谢,我解决了我的问题:)