我正在研究这个例子:http://code.msdn.microsoft.com/wpapps/Beginners-for-how-to-use-45690caa
我在表格中插入了一个名为“category”的新列
现在我需要在列表框中仅查看类别为==“card”的行
这是列表框:
<ListBox x:Name="ContactListBox" Grid.Row="2">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Source="Images\open.png" Margin="-30, -18, 0, 0" Tap="Edit_Tap" Height="75" Width="75"/>
<TextBlock Text="{Binding Name}" Tap="Edit_Tap" Grid.Column="1" FontSize="{StaticResource PhoneFontSizeLarge}" TextAlignment="Left"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这是列表框的来源:
void Customers_Loaded(object sender, RoutedEventArgs e)
{
using (AddressBookDataContext dc = new AddressBookDataContext())
{
ContactListBox.ItemsSource = from c in dc.Contacts select c;
}
}
我试图改变它: ContactListBox.ItemsSource =来自c中的dc.Contacts其中c.category ==“card”选择c; 但是我不行,我该怎么办?
谢谢大家,抱歉我的英语不好
答案 0 :(得分:0)
你没有提到你得到的异常,但听起来你可能会得到`NotSupportedException:成员“[whatever]”没有支持的SQL错误翻译“。
如果你搜索这个异常,你会在一个共同的主题上找到很多答案 - 本质上Linq2SQL不知道如何将“Type”翻译成SQL,所以它就会失败。在你的情况下,你可以通过使用Linq2SQL和Linq2Object来解决这个问题:
// L2S from the DB, transferred to an Enumerable
var itemSource = (from c in dc.Contacts select c).AsEnumerable();
ContactListBox.ItemsSource = itemSource.Where(c => c.Type == "q");
// or full form Linq
ContactListBox.ItemsSource = from c in itemSource where c.Type == "q" select c;
在我的情况下,我没有添加专栏,我只添加了多个不同Type
的联系人,只过滤了Type
“q”的内容。