你也可以使用LINQ和匿名类型描述用少得多的代码实现同样的结果在这里。更新:博客已关闭,这里是内容:(..)表中显示的值表示字符串的长度,而不是字符串值(!)似乎很奇怪,但这是绑定机制的默认工作方式-给定对象,它将尝试绑定到该对象的第一个属性对象(它可以找到的第一个属性)。当传递实例String类时,它绑定到的属性是String.Length,因为没有其他属性可以提供实际的字符串本身。这意味着要获得正确的绑定,我们需要一个包装器对象,该对象将字符串的实际值作为属性公开:public class StringWrapper { string stringValue; public string StringValue { get { return stringValue; } set { stringValue = value; } } public StringWrapper(string s) { StringValue = s; } } List<StringWrapper> testData = new List<StringWrapper>(); // add data to the list / convert list of strings to list of string wrappers Table1.SetDataBinding(testdata);尽管此解决方案可以按预期工作,但它需要很多行代码(主要是将字符串列表转换为字符串包装器列表)。我们可以使用LINQ和匿名类型来改进此解决方案-我们将使用LINQ查询来创建字符串包装器的新列表(在我们的例子中,字符串包装器将是匿名类型)。 var values = from data in testData select new { Value = data }; Table1.SetDataBinding(values.ToList());我们要做的最后更改是将LINQ代码移至扩展方法:public static class StringExtensions { public static IEnumerable CreateStringWrapperForBinding(this IEnumerable<string> strings) { var values = from data in strings select new { Value = data }; return values.ToList(); }这样,我们可以通过对任何字符串集合调用单个方法来重用代码:Table1.SetDataBinding(testData.CreateStringWrapperForBinding());