如何在WCF中使用LINQ返回JSON结果
本文关键字:LINQ 返回 JSON 结果 WCF | 更新日期: 2023-09-27 18:22:39
我是WCF的新手。我正在尝试使用实体框架创建具有LINQ结果的列表。我想返回JSON数据。但我无法得到它。我得到了一个错误,比如Notsupportedexception未被用户代码处理。请帮我解决这个问题。提前谢谢。
这是我的服务建设者:
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "getcontact")]
List<string> JSONDataAll();
如果我像这样返回,它工作得很好:
public List<String> JSONDataAll()
{
var users = (from u in db.Tbl_Users select u).ToList();
var finalList= users.Select(u => u.UserName).ToList();
return st;
}
在这种情况下,其显示错误:
public List<String> JSONDataAll()
{
var users = (from u in db.Tbl_Users
select new
{ u.UserName,
u.UserAddress
}).ToList();
return users;
}
由于使用WCF,要进行投影(select子句),可以创建一个新类型作为返回类型,而不是匿名对象或派生对象,并且EF实体不能用于进行投影。
根据讨论,派生对象可能导致localhost.com
问题,可能存在无效的proeprty值。您还可以利用DataMember
属性对其进行配置。
[DataContract]
public class UserDataResponse
{
[DataMember]
public string UserName { get; set; }
[DataMember]
public string UserAddress { get; set; }
}
并更改WCF操作的返回类型。
public List<UserDataResponse> JSONDataAll()
{
var users = (from u in db.Tbl_Users
select new UserDataResponse
{
UserName = u.UserName,
UserAddress = u.UserAddress
});
return users.ToList();
}