尝试将Shortdate列表设置为Datagrid.ItemsSource
var query = from loan in Loans
select new {Date = loan.StatusCommittedDate}
DataGrid.ItemsSource = query.ToList();
它在DataGrid中的“3/25/2011 12:00:00 AM”格式中显示日期 我只需要日期,而不是时间,所以我的当前Linq
var query = from loan in Loans
select new {Date = loan.StatusCommittedDate.ToString()}
DataGrid.ItemsSource = query.ToList()
以“2011-03-25”格式显示,这就是我想要的。因此Linq查询有效,但将其输入数据网格是错误的,如果我能得到一些指导请。当我尝试通过WPF中的Datagrid显示信息时,我收到此错误
LINQ to Entities无法识别方法System.String ToString()
方法,并且此方法无法转换为商店表达式。
答案 0 :(得分:0)
尝试执行不带ToString()
的LINQ语句,将结果保存到中间变量。
然后在分配到网格之前操纵结果。看看是否有效:
var dates = (from loan in Loans
select loan.StatusCommittedDate).ToList();
DataGrid.ItemsSource = query.Select(d => d.ToString()).ToList();
我猜你在你的网格中显示的不仅仅是这个,但我可以从你所包含的代码中猜出这一切。
答案 1 :(得分:0)
我建议您不要将完美的DateTime转换为字符串,只是为了格式化它。
相反,通过适当配置DataGrid,利用在WPF内最新可能时刻进行格式化的能力。
<DataGrid AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn
Header="Status Committed Date"
Binding="{Binding Date, StringFormat=yyyy-mm-dd}"/>
</DataGrid.Columns>
</DataGrid>
需要注意的重要事项:
Date
属性。请注意,我实际上没有机会将上述XAML插入到项目中以验证它是否有效,因此可能存在拼写错误。