C# LINQ方法可用于从列表中提取单个元素?
这是C ASPNET中的一个数据表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
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"));