我正在测试从Dictionary VS列表中获取数据的速度.
我用这段代码来测试:
internal class Program
{
private static void Main(string[] args)
{
var stopwatch = new Stopwatch();
List<Grade> grades = Grade.GetData().ToList();
List<Student> students = Student.GetStudents().ToList();
stopwatch.Start();
foreach (Student student in students)
{
student.Grade = grades.Single(x => x.StudentId == student.Id).Value;
}
stopwatch.Stop();
Console.WriteLine("Using list {0}", stopwatch.Elapsed);
stopwatch.Reset();
students = Student.GetStudents().ToList();
stopwatch.Start();
Dictionary<Guid, string> dic = Grade.GetData().ToDictionary(x => x.StudentId, x => x.Value);
foreach (Student student in students)
{
student.Grade = dic[student.Id];
}
stopwatch.Stop();
Console.WriteLine("Using dictionary {0}", stopwatch.Elapsed);
Console.ReadKey();
}
}
public …Run Code Online (Sandbox Code Playgroud) 考虑我们有这个类:
public class Data
{
public string Field1 { get; set; }
public string Field2 { get; set; }
public string Field3 { get; set; }
public string Field4 { get; set; }
public string Field5 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何动态选择指定列?这样的事情:
var list = new List<Data>();
var result= list.Select("Field1,Field2"); // How ?
Run Code Online (Sandbox Code Playgroud)
这是唯一的解决方案=> 动态LINQ 吗?
编译时不知道所选字段.它们将在运行时指定
这个地理空间T-SQL代码的C#等价物是什么?
DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326);
SET @h = geography::Point(47.653, -122.358, 4326)
SELECT @g.STIntersects(@h)
Run Code Online (Sandbox Code Playgroud)
我试图使用SqlGeometry数据类型在多边形中找到一个点- 并且可以使用上面的T-SQL; 但我不明白如何实现等效的C#代码.
如何在多个ViewModel之间共享数据?
例如,在应用程序中有一个名为Project的类.
public class Project : ModelBase
{
private string _projectName;
public string ProjectName
{
get { return _projectName; }
set
{
_projectName = value;
RaisePropertyChanged(() => ProjectName);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在多个ViewModels应用程序中应该访问ActiveProject.
在ViewModels之间共享Project的最佳方法是什么?
我之前使用过Messaging但它需要很多编码.对于所有ViewModel,我要创建ActiveProject属性,还必须注册一个messenger来更新它.
我使用MVVM Light框架.
任何代码示例将不胜感激.
我试图将ObservableCollection的T绑定到DataGrid的DataGridComboBoxColumn.
DataGrid定义是:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Model, IsAsync=True}">
<DataGrid.Columns>
<DataGridTextColumn Header="Column Entry" IsReadOnly="True" Binding="{Binding ColumnName}"/>
<DataGridComboBoxColumn Header="Road Type" ItemsSource="{Binding RoadTypes}"/>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
这是ViewModel和Model
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var viewModel = new ViewModel();
DataContext = viewModel;
}
}
public class ViewModel : ViewModelBase
{
private ObservableCollection<Model> _model;
public ViewModel()
{
var list = new List<Model>();
var roadTypes = new ObservableCollection<RoadType>
{
new RoadType
{
Code = 1,
Id = 1,
Name = "Name1"
},
new …Run Code Online (Sandbox Code Playgroud) c# ×5
wpf ×2
.net ×1
binding ×1
datagrid ×1
linq ×1
mvvm ×1
performance ×1
sql-server ×1
sqlgeography ×1
t-sql ×1
xaml ×1