That doesn't work because anything read from the config file is treated as literally a string;
<add key="rslt" value="e:\\testdata\\ + dateStr + .txt"/>
There is nothing in that "string" that says dateStr should be replaced with the value of a variable you have called dateStr. How does .net know that's what you want to do?
A better way of handling this is to put a token in the string that is then replaced with your actual values in the code. So if you update the config to have
<add key="rslt" value="e:\\testdata\\{0}.txt"/>
In your code you can use string.Format to replace {0} with your variable contents
string filename = string.Format(textFromConfig, dateStr);
Format will replace {0} with the first param (dateStr), {1} with the second param (you don't have any) and so on.