c# - LINQ 方法可用于从 List 中提取单个元素?
问题描述
这是一个datatable
在 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 的值,我编译了两个不同的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, 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();
然后,您可以使用以下方法获得您的价值:
var lb = StringB.FirstOrDefault(x => x.Contains("someString"));
推荐阅读
- jenkins - 如何在同一台 Mac 机器上运行具有不同端口的多个 Jenkins 服务器?
- git - 将 github 配置为对一个项目使用本地用户名和电子邮件?
- ios - 切换到另一个视图控制器时,如何保持标签栏可见?
- javascript - 如何迭代在 td 内具有输入标签的表
- javascript - Javascript 3d 卡片(立方体)交互式旋转
- react-typescript - 如何为反应中的方法编写单元测试用例
- python - 如何在 selenium python 中使用索引号访问 xpath?
- push-notification - 是否可以将 {length=32,bytes=0x6a0adb75e4...} 损坏的 iOS 推送令牌转换为正确的工作令牌?
- audio - AudioNode 清理和处置
- c# - 'OracleInternal.Common.ProviderConfig' 的类型初始化程序引发了异常 linux 8 oracle db