我是全新的LINQ
,我试图DataSet
用它来查询我.所以我按照这个例子写了这封信,它不起作用.
我知道我的DataTable
需要.AsEnumerable
最终,但它不被承认IDE
.我究竟做错了什么?我错过了示例中未显示的引用/导入(这不是第一次MSDN示例不太正确),如果是,那么哪一个?还是完全不同的东西?
示例代码:
Imports System
Imports System.Linq
Imports System.Linq.Expressions
Imports System.Collections.Generic
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.Common
Imports System.Globalization
//Fill the DataSet.
Dim ds As New DataSet()
ds.Locale = CultureInfo.InvariantCulture
//See the FillDataSet method in the Loading Data Into a DataSet topic.
FillDataSet(ds)
Dim products As DataTable = ds.Tables("Product")
Dim query = From product In products.AsEnumerable() _
Select product
Console.WriteLine("Product Names:")
For Each p In query
Console.WriteLine(p.Field(Of String)("Name")) …
Run Code Online (Sandbox Code Playgroud) 我已经做了很多方法重载,但现在我有一个实例,我想重载一个属性.Visual Studio中的IDE似乎允许它,因为我实际上可以设置两个重载,但是我得到一个错误,说它无效,因为它们的类型不同.我想我的语法中缺少一些东西?
我希望能够使用两个(或更多)不同的自定义类作为我的属性的类型.
Public Overloads Property myFlexibleProperty() As myCustomClass1
Get
Return _myFlexibleProperty1
End Get
Set(ByVal value As myCustomClass1)
_myFlexibleProperty1 = value
End Set
End Property
Public Overloads Property myFlexibleProperty() As myCustomClass2
Get
Return _myFlexibleProperty2
End Get
Set(ByVal value As myCustomClass2)
_myFlexibleProperty2 = value
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现的所有帮助都与重载方法有关.尽管IDE让我这么做,我开始认为这是不可能的?
我想快速在DataGrid中显示一个List(OF String)(动态),所以我想
myDataGrid.ItemsSource = myList
Run Code Online (Sandbox Code Playgroud)
这将是一种快速简便的方法,因为它适用于DataTable:
myDataGrid.ItemsSource = myDataTable.DefaultView
Run Code Online (Sandbox Code Playgroud)
我的DataGrid将AutoGenerateColumns属性设置为"True".对于数据表,这可以正常工作,但是当我将List(Of String)分配给ItemsSource时,我的列名称显示为'Length',显示的数据是整数,它们是List中每个String项中的字符数,而不是实际的String项.
我究竟做错了什么?
编辑
我的测试列表是这样创建的:
Dim myList As New List(Of String)
For i As Int32 = 1 To 25
myList.Add("Item #" & i)
Next
Run Code Online (Sandbox Code Playgroud)
以下两种方法产生完全相同的结果.
创建一个CollectionView:
Dim cv = CType(CollectionViewSource.GetDefaultView(myList), CollectionView)
DataGrid1.ItemsSource = cv
Run Code Online (Sandbox Code Playgroud)
只需使用List:
DataGrid1.ItemsSource = myList
Run Code Online (Sandbox Code Playgroud)
这两种方法都在DataGrid中显示单个列.该列标题为"长度",包含与每个字符串条目的长度匹配的整数.
编辑
'testalino'对VB的回答:
DataGrid1.ItemsSource = myList.Select(Function(s) New With {.Value = s}).ToList
Run Code Online (Sandbox Code Playgroud)