.ToListAsync() vs .ToList() + Task.Run
<p>I have a WPF application.</p>

<p>The data is brought from the repository to the ViewModel. What would be the better way to retrieve the data:</p>

<p><strong>Method 1:</strong></p>

<p>In Repository: </p>

<pre><code>public List&lt;LogDetail&gt; GetLogsOfTypeForCase(int caseId, LoggType logType)
    {
        using (var ctx = new SidraEntitiesNoChangesDetection())
        {
            var logs = (from l in ctx.Loggs
                where l.log_fk_caseid == caseId &amp;&amp; l.log_operation == logType.ToString()
                select new LogDetail()
                {
                    ColumnName = l.log_columnname,
                    DateAndTime = l.log_dateandtime,
                    IdentificationDetail = l.log_identificationDetail,
                    NewValue = l.log_new_value,
                    OldValue = l.log_old_value,
                    TableName = l.log_tablename,
                    UserCode = l.User.usr_code
                }).ToList();

            return logs;
        }
    }
</code></pre>

<p>In ViewModel:</p>

<pre><code>await Task.Run(
            () =&gt;
            {
                if (false == this.CancellationTokenSource.IsCancellationRequested)
                {
                    this.CaseLogs = this.dataAdapter.GetLogsOfTypeForCase(this.CaseId, LoggType.S);
                }

            },
            this.CancellationTokenSource.Token
            );
</code></pre>

<p>or
<strong>Method 2</strong></p>

<p>In Repository:</p>

<pre><code>public async Task&lt;List&lt;LogDetail&gt;&gt; GetLogsOfTypeForCase(int caseId, LoggType logType)
    {
        using (var ctx = new SidraEntitiesNoChangesDetection())
        {
            var logs = await (from l in ctx.Loggs
                where l.log_fk_caseid == caseId &amp;&amp; l.log_operation == logType.ToString()
                select new LogDetail()
                {
                    ColumnName = l.log_columnname,
                    DateAndTime = l.log_dateandtime,
                    IdentificationDetail = l.log_identificationDetail,
                    NewValue = l.log_new_value,
                    OldValue = l.log_old_value,
                    TableName = l.log_tablename,
                    UserCode = l.User.usr_code
                }).ToListAsync();

            return logs;
        }
    }
</code></pre>

<p>and in ViewModel</p>

<pre><code>protected override async void Load()
    {
           if (false == this.CancellationTokenSource.IsCancellationRequested)
           {
               this.CaseLogs = await this.dataAdapter.GetLogsOfTypeForCase(this.CaseId, LoggType.S);
           }
     }
</code></pre>

<p>From what I have read, Method 1 would be preferred, but what be the advantages?</p>