如何将列表数据存入变量?解决System.Collections.Generic.List显示异常
解决C#查询列表后无法显示属性值的问题
问题根源很明确:
- 自定义的
HexBin类默认继承自Object,它的ToString()方法只会输出类的全名,不会自动显示ValHex和ValBin属性 - 用
Where查询得到的List<HexBin>(或IEnumerable<HexBin>),直接调用ToString()也只会输出集合的类型名称,比如System.Collections.Generic.List1[HexBin]`
解决步骤
1. 重写HexBin类的ToString()方法
让单个对象能直接输出你需要的属性信息:
public class HexBin { public string ValHex { get; set; } public string ValBin { get; set; } // 重写ToString,自定义输出格式 public override string ToString() { return $"十六进制:{ValHex},二进制:{ValBin}"; } }
2. 处理查询后的集合输出
集合本身不能直接ToString(),需要遍历拼接每个元素的字符串:
假设你的查询代码是这样的:
private void button1_Click(object sender, EventArgs e) { List<HexBin> hexBinList = /* 你的数据源 */; // 执行查询 var filteredList = hexBinList.Where(item => /* 你的过滤条件,比如item.ValHex == "A1" */).ToList(); // 错误写法:直接ToString()只会显示类型名 // MessageBox.Show(filteredList.ToString()); // 正确写法:拼接每个元素的字符串 string displayContent = string.Join(Environment.NewLine, filteredList); MessageBox.Show(displayContent); }
如果不想重写ToString(),也可以直接在拼接时指定属性:
string displayContent = string.Join(Environment.NewLine, filteredList.Select(item => $"Hex: {item.ValHex}, Bin: {item.ValBin}")); MessageBox.Show(displayContent);
这样就能正常显示每个元素的ValHex和ValBin值了。
内容的提问来源于stack exchange,提问作者Larry
相关产品推荐
相关产品推荐

