如何解决LINQ方法可用于从List <string>中提取单个元素?
这是C#ASPNET中的datatable
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","X4SVR" });
dt.Rows.Add(new object[] { "3","X400" });
使用datatable的值,我已经编译了两个不同的List<string>
List<string> StringA = new List<string> { string.Join(",",dt.AsEnumerable().Select(x => x.Field<string>("p_int")).Distinct()) };
List<string> StringB = new List<string> { string.Join(",dt.AsEnumerable().Select(z => z.Field<string>("p_uni")).Distinct()) };
我需要从X4SVR
中提取值List<string> StringB
并尝试
var lb = StringB.FirstOrDefault(x => x.Contains("X4SVR"));
Response.Write(lb.ToString() + "<br /><br />");
var result = StringB.Where(x => x.Contains("X4SVR")).FirstOrDefault();
Response.Write(result.ToString() + "<br /><br />");
var content = StringB.FirstOrDefault(x => x.Contains("X4SVR")) ?? StringB.FirstOrDefault();
Response.Write(content.ToString() + "<br /><br />");
string ls_SearchVal = "X4SVR";
var lobj_Result = StringB.All(o => o.Contains(ls_SearchVal));
Response.Write(lobj_Result.ToString() + "<br /><br />");
var value = StringB.Find(item => item.Contains("X4SVR")).ToString();
Response.Write(value.ToString() + "<br /><br />");
返回值不仅是X4SVR
值,而且是
seat,X400,X4SVR
seat,X4SVR
True
seat,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();
然后,您可以使用以下方法获得价值:
var lb = StringB.FirstOrDefault(x => x.Contains("someString"));
,
无法理解为什么返回已经查询的值,但是:
MainWindow.xaml
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。