在我的xaml我有一个按钮和一个TextBlock
<TextBlock Text="{Binding AText}" FontSize="20"/>
<Button Content="Click" Command="{Binding MyCommand}" Grid.Row="1"/>
Run Code Online (Sandbox Code Playgroud)
在我的ViewModel中,我有以下代码
let aText = self.Factory.Backing(<@ self.AText @>, "Initial Text")
let asyncTask x = async {
    self.AText <- "Loading"
    do! Async.Sleep(5000)
    self.AText <- "Loaded"
} 
member self.AText with get() = aText.Value and set(v) = aText.Value <- v    
member self.MyCommand = self.Factory.CommandAsyncChecked(asyncTask, fun _ -> true)
Run Code Online (Sandbox Code Playgroud)
当我单击按钮时,它会被禁用并保持不变,直到它完成asyncTask.我认为设置canExecute为true将改变行为,但事实并非如此!
如何控制按钮的行为?
Qt读取数据库的速度是否比C#慢?我想我错过了什么!为了比较我在Qt中写下的阅读速度
QElapsedTimer t;
t.start();
int count = 0;
QString cs = "Driver={SQL Server}; Server=EMON;Database=FAODB;User=Test;Password=Test";
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC",cs);
db.setDatabaseName(cs);
db.open();
QSqlQuery query(db);
query.setForwardOnly(true);
query.exec("SELECT * FROM FAOCropsLivestock");
while(query.next()){
    if(query.value("Country").toString() == "\"Bangladesh\"")
        count++;
}
db.close();
qDebug()<< QString::number(count) + " elapsed ms " + QString::number(t.elapsed());
Run Code Online (Sandbox Code Playgroud)
并在C#
Stopwatch s = new Stopwatch();
s.Start();
int count = 0;
string cs = ConfigurationManager.ConnectionStrings["DB"].ConnectionString;
string query = "SELECT * FROM FAOCropsLivestock";
using(SqlConnection con = new SqlConnection(cs)){
      using(SqlCommand cmd = new SqlCommand(query, con)){
            con.Open();
            SqlDataReader rd = …Run Code Online (Sandbox Code Playgroud) 我试图k像这样在for循环中增加:
t = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
for k = 1, #t do
    if k == 1 then 
        print(t[1])
    else
        print(t[k], t[k + 1], t[k + 2])
        k = k + 2
    end 
end
Run Code Online (Sandbox Code Playgroud)
但这不起作用!如何k在else块中增加?
FAOCropsLivestock.csv包含超过1400万行.在我的.fs档案中,我宣布了
type FAO = CsvProvider<"c:\FAOCropsLivestock.csv">
Run Code Online (Sandbox Code Playgroud)
并尝试使用以下代码
FAO.GetSample().Rows.Where(fun x -> x.Country = country) |> ....
FAO.GetSample().Filter(fun x -> x.Country = country) |> ....
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,都exception被扔了.
csv在MSSQL Server中加载文件后,我也试过了下面的代码
type Schema = SqlDataConnection<conStr>
let db = Schema.GetDataContext()
db.FAOCropsLivestock.Where(fun x-> x.Country = country) |> ....
Run Code Online (Sandbox Code Playgroud)
有用.如果我query使用OleDb连接发出它也有效,但它很慢.
如何使用它来获取顺序CsvProvider?