2017-04-15 61 views
1

如何查詢基於ASP.NET的服務器中的SingleResult對象?請幫助下面的代碼。如何查詢基於ASP.NET的服務器中的SingleResult對象?

public class UserController : TableController<User> 
{ 
... 

public Task DeleteUser(string id) 
{ 
    SingleResult<User> user = Lookup(id); 
    // I can drill down into user via the debugger and see the data 
    // I'm looking for. But I don't know how to translate what I see 
    // in the debugger to a .Net call. 

    // This is what I see in the debugger: 
    // new System.Linq.SystemCore_EnumerableDebugView 
    // <AlertMeService.DataObjects.User>(result.Queryable).Items[0].GroupNm 
    // which equals "fooGrp" 

    // The below call doesn't work 
    // string GroupNm = user.GroupNm; 

    // I need GroupNm from the object to send a group notification 
    PostNotification(user.GroupNm, ...); 
    return DeleteAsync(id); 
} 
... 

任何幫助,非常感謝。

+0

我只想從查找返回的SingleResult對象中獲取user.GroupNm。我不知道如何對它進行類型化。 – Mike

+0

你是否遵循了以下建議來檢查這個問題,有沒有更新? –

+0

布魯斯,戴的下面的建議工作。感謝您的跟蹤。 -Mike – Mike

回答

4

SingleResult返回IQueryable,因此請使用Linq SingleSingleOrDefault方法執行查詢並獲取結果。

Single將返回一個異常,如果返回0,2或更多的值,並且SingleOrDefault將允許0或1的值,並且如果返回2或多個值則會拋出。如果需要多個值,則使用First/FirstOrDefaultLast/LastOrDefault,或其他一些終端LINQ的方法,適當

SingleResult<User> userQuery = Lookup(id); 
User user = userQuery.SingleOrDefault(); 
if(user == null) { 

} 
else { 

} 
0

根據你的描述,我檢查了SingleResult類:

public sealed class SingleResult<T> : SingleResult 
{ 
    // 
    // Summary: 
    //  Initializes a new instance of the System.Web.Http.SingleResult`1 class. 
    // 
    // Parameters: 
    // queryable: 
    //  The System.Linq.IQueryable`1 containing zero or one entities. 
    public SingleResult(IQueryable<T> queryable); 

    // 
    // Summary: 
    //  The System.Linq.IQueryable`1 containing zero or one entities. 
    public IQueryable<T> Queryable { get; } 
} 

根據我的理解,你可以修改你的方法如下:

public Task DeleteUser(string id) 
{ 
    SingleResult<User> result = Lookup(id); 
    var user=result.Queryable.SingleOrDefault(); 
    if(user!=null) 
    { 
     //I need GroupNm from the object to send a group notification 
     PostNotification(user.GroupNm, ...); 
     return DeleteAsync(id); 
    } 
    return Task.FromException($"the specific user with userid:{id} is not found."); 
} 
相關問題