C#| .NET 4.5 | 实体框架5
我在Entity Framework中有一个类如下所示:
public class Location
{
public long ID {get;set;}
public long ParentID {get;set;}
public List<Location> Children {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
ID是位置的标识符,ParentID将其链接到父级,Children包含父级位置的所有子级位置.我正在寻找一些简单的方法,可能递归地将所有"Location"和他们的孩子放到一个包含Location.ID的List中.我在递归地概念化这个问题时遇到了麻烦.任何帮助表示赞赏.
这是我到目前为止,它是实体类的扩展,但我相信它可以做得更好/更简单:
public List<Location> GetAllDescendants()
{
List<Location> returnList = new List<Location>();
List<Location> result = new List<Location>();
result.AddRange(GetAllDescendants(this, returnList));
return result;
}
public List<Location> GetAllDescendants(Location oID, ICollection<Location> list)
{
list.Add(oID);
foreach (Location o in oID.Children)
{
if (o.ID != oID.ID)
GetAllDescendants(o, list);
}
return list.ToList();
}
Run Code Online (Sandbox Code Playgroud)
更新
我最终在SQL中编写了递归,将其抛入SP,然后将其拉入实体.看起来更干净,比使用Linq更容易,并且根据评论判断Linq和Entity似乎不是最好的路线.感谢您的帮助!
C#| .NET 4.5 | 实体框架5
我有一个以ID,ParentID,Name形式从SQL查询返回的数据.我想获取该数据并将其解析为Hierarchical JSON字符串.到目前为止,它似乎更应该是一项艰巨的任务.因为我正在使用Entity,所以数据作为IEnumerable很好地回馈给我.现在我相信我只需要某种形式的递归,但我不太清楚从哪里开始.任何帮助表示赞赏.
数据返回为
id parentId name 1 1 TopLoc 2 1 Loc1 3 1 Loc2 4 2 Loc1A
代码是
public static string GetJsonLocationHierarchy(long locationID)
{
using (EntitiesSettings context = new EntitiesSettings())
{
// IEnumerable of ID,ParentID,Name
context.GetLocationHierarchy(locationID);
}
}
Run Code Online (Sandbox Code Playgroud)
最终结果我希望是这样的:
{
"id": "1",
"parentId": "1",
"name": "TopLoc",
"children": [
{
"id": "2",
"parentId": "1",
"name": "Loc1",
"children": [
{
"id": "4",
"parentId": "2",
"name": "Loc1A",
"children": [
{}
]
}
]
},
{
"id": "3", …Run Code Online (Sandbox Code Playgroud) ASP.NET MVC 4 | .NET 4.5 | 剃刀| C#
我在页面顶部有一个文本框和一个按钮.下面是一个Kendo Grid,它绑定到我的视图模型中的List.当用户单击搜索按钮时,将发出jQuery ajax请求,并将数据作为JSON返回.我唯一的问题是如何将数据绑定到我的Kendo Grid?任何帮助表示赞赏.
@(Html.Kendo().Grid(Model.PurchaseOrder.LineItems)
.Name("poSearchGrid")
.Columns(c =>
{
c.Bound(x => x.LineNumber).Title("Line Number");
c.Bound(x => x.Qty).Title("PO Qty");
c.Bound(x => x.OpenQty).Title("Open Qty");
c.Bound(x => x.QtyReceived).Title("Qty Received");
})
.Events(e => e.DataBound("onDataBound"))
.DataSource(s => s.Ajax().Model(model => model.Id(i => i.ID)))
)
Run Code Online (Sandbox Code Playgroud)
按钮单击Ajax调用
$("#btnSearch").on('click', function() {
console.log("click");
var searchText = $("#PONumber").val();
if (searchText == "") {
alert("You must enter a search value");
return;
}
$.ajax({
url: '@Url.Action("Search")',
data: { poNumber: searchText},
type: 'POST',
dataType: "json",
success: …Run Code Online (Sandbox Code Playgroud) 我正在使用SQL Server和TSQL:
我想要做的是在另一列上使用group by时在一列上使用逗号分隔值.见下面的数据示例.
col1 --- col2 1121 abc 1123 aee 1335 afg 1121 def 1121 abc
我想在"col1"上分组并计算记录数,但如果数据不同,我还想在col2上连接.例如,使用值"1121"作为参考,请参阅下面的数据输出.
qty --- col1 --- col2 3 1121 abc, def 1 1123 aee 1 1335 afg
我想过可能使用COALESCE,但我不确定如何在另一列上使用group by时实现它.
任何帮助将不胜感激.
我是Haskell的新手,所以如果这是一个简单的问题,我道歉,但我无法在任何地方找到答案.
我想要做的是获取列表的第一个和最后一个元素,并将它们返回到新列表中.
我知道head [1,2,3,4]会回来1,我知道last [1,2,3,4]会回来4.但是,我如何将这两个结果放入如下列表中[1,4]?
谢谢.