如何在基于 ASP.NET 的服务器中查询 SingleResult 对象?
How to query a SingleResult object in a ASP.NET based server?
如何在基于 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);
}
...
非常感谢任何帮助。
SingleResult
returns一个IQueryable
,所以使用LinqSingle
或SingleOrDefault
方法执行查询并得到结果。
如果返回 0、2 或更多值,Single
将抛出异常,而 SingleOrDefault
将允许 0 或 1 值,如果返回 2 或更多值将抛出异常。如果您想要多个值,则使用 First
/FirstOrDefault
或 Last
/LastOrDefault
,或其他一些终端 Linq 方法,视情况而定
SingleResult<User> userQuery = Lookup(id);
User user = userQuery.SingleOrDefault();
if( user == null ) {
}
else {
}
根据您的描述,我检查了 SingleResult
class:
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; }
}
据我了解,您可以按如下方式修改 DeleteUser
方法:
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.");
}
如何在基于 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);
}
...
非常感谢任何帮助。
SingleResult
returns一个IQueryable
,所以使用LinqSingle
或SingleOrDefault
方法执行查询并得到结果。
Single
将抛出异常,而 SingleOrDefault
将允许 0 或 1 值,如果返回 2 或更多值将抛出异常。如果您想要多个值,则使用 First
/FirstOrDefault
或 Last
/LastOrDefault
,或其他一些终端 Linq 方法,视情况而定
SingleResult<User> userQuery = Lookup(id);
User user = userQuery.SingleOrDefault();
if( user == null ) {
}
else {
}
根据您的描述,我检查了 SingleResult
class:
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; }
}
据我了解,您可以按如下方式修改 DeleteUser
方法:
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.");
}