Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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# LINQ方法可用于从列表中提取单个元素?_C#_Asp.net_List_Linq - Fatal编程技术网

C# LINQ方法可用于从列表中提取单个元素?

C# LINQ方法可用于从列表中提取单个元素?,c#,asp.net,list,linq,C#,Asp.net,List,Linq,这是C ASPNET中的一个数据表 DataTable dt = new DataTable(); dt.Columns.Add("p_int", typeof(string)); dt.Columns.Add("p_uni", typeof(string)); dt.Rows.Add(new object[] { "0", "seat" }); dt.Rows.Add(ne

这是C ASPNET中的一个数据表

    DataTable dt = new DataTable();
    dt.Columns.Add("p_int", typeof(string));
    dt.Columns.Add("p_uni", typeof(string));

    dt.Rows.Add(new object[] { "0", "seat" });
    dt.Rows.Add(new object[] { "1", "X400" });
    dt.Rows.Add(new object[] { "4", "X400" });
    dt.Rows.Add(new object[] { "2", "X400" });
    dt.Rows.Add(new object[] { "2", "X4SVR" });
    dt.Rows.Add(new object[] { "3", "X400" });
使用datatable的值,我编译了两个不同的列表

返回值绝不只是X4SVR值,而是

seat, X400, X4SVR

seat, X400, X4SVR

seat, X400, X4SVR

True

seat, X400, X4SVR

如何使返回值仅为X4SVR?

这是因为两个列表只包含一个连接字符串元素

不要使用string.Join。相反,您需要的是:

var StringA = dt.AsEnumerable().Select(x => x.Field<string>("p_int")).Distinct().ToList();
var StringB = dt.AsEnumerable().Select(z => z.Field<string>("p_uni")).Distinct().ToList();

这是因为两个列表只包含一个连接字符串元素

不要使用string.Join。相反,您需要的是:

var StringA = dt.AsEnumerable().Select(x => x.Field<string>("p_int")).Distinct().ToList();
var StringB = dt.AsEnumerable().Select(z => z.Field<string>("p_uni")).Distinct().ToList();

不可理解的是,为什么返回已经查询的值,但是:

var value = dt.AsEnumerable().Select(z => z.Field<string>("p_uni")).FirstOrDefault(s => s.Contains("X4SVR"));

不可理解的是,为什么返回已经查询的值,但是:

var value = dt.AsEnumerable().Select(z => z.Field<string>("p_uni")).FirstOrDefault(s => s.Contains("X4SVR"));

您需要查看StringB的内容。您的列表中有一项是您一直在获取的字符串。我不知道您希望列表的准确程度。请尝试以下操作:DataRow row=dt.aseneumerable.Wherex=>x.Fieldp_uni==X4SVR.FirstOrDefault;字符串p_int=stringrow[p_int];您需要查看StringB的内容。您的列表中有一项是您一直在获取的字符串。我不知道您希望列表的准确程度。请尝试以下操作:DataRow row=dt.aseneumerable.Wherex=>x.Fieldp_uni==X4SVR.FirstOrDefault;字符串p_int=stringrow[p_int];感谢回复,我需要返回值,因为我必须与从数据库表中提取的值进行比较。回复您的建议是正确的,非常感谢您的帮助!感谢回复,我需要返回值,因为我必须与从数据库表中提取的值进行比较。回复您的建议是正确的,非常感谢您的帮助!
var value = dt.AsEnumerable().Select(z => z.Field<string>("p_uni")).FirstOrDefault(s => s.Contains("X4SVR"));