返回ApplicationUser对象或ApplicationUserId字符串

时间:2018-03-05 23:21:42

标签: linq asp.net-core

我的ASP.NET核心项目中有Twitter风格的关注者/后续设置。

我正在尝试构建一个LINQ查询,该查询将返回属于我的记录以及我关注的用户网络。像这样:

.Where(o => usersFollowingList.Contains(o.ApplicationUser.Id))

我的粉丝/后续设置是与.NET Core的IdentityUser的自引用关系:

public class ApplicationUser : IdentityUser
{
    public virtual ICollection<Network> Following { get; set; }
    public virtual ICollection<Network> Followers { get; set; }
}

public class Network
{
    public ApplicationUser ApplicationUser { get; set; }
    public string ApplicationUserId { get; set; }
    public ApplicationUser Follower { get; set; }
    public string FollowerId { get; set; }
}

此设置为我提供了关注的用户列表。该集合具有ApplicationUser对象及其ApplicationUserId,它是字符串类型。

我遇到了一个问题,试图获取我可以在上面的WHERE子句中使用的ApplicationUser对象或ApplicationUserId字符串的集合。

我可以像这样得到我的粉丝的ApplicationUserId字符串列表:

var g = from p in loggedinUser.Following
select p.ApplicationUser.Id.ToString();

但是这不包含我自己的ApplicationUserId。我无法轻松地将自己的ApplicationUserId添加到此集合中,因为它是IEnumerable类型。

如何获取可在我的WHERE子句中使用的ApplicationUser对象或ApplicationUserId字符串的适当集合?或者是否有更好的方法在我的WHERE过滤器中使用“关注者”列表?

1 个答案:

答案 0 :(得分:1)

您可以使用library(shiny) library(data.table) library(DT) tabledata <- data.table(a=1:4, b= 5:8) ui <- fluidPage( DT::dataTableOutput("currenttable") ) server <- function(input,output, session){ output$currenttable <- renderDT({tabledata}, rownames = FALSE, extensions = 'Buttons', options = list(dom = 'Bfrtip', pageLength = nrow(tabledata), buttons = list( list(extend = 'copy'), list(extend = 'pdf', filename = 'CurrentTable', title = "My Title", header = FALSE) ) ) ) } shinyApp(ui, server) 添加两个Concat,因此您只需将自己转换为单身IEnumerable即可。我更喜欢扩展方法:

IEnumerable

现在您可以查询:

public static IEnumerable<T> Append<T>(this IEnumerable<T> rest, params T[] last) => rest.Concat(last);

但是,如果您已经拥有var g = (from p in loggedinUser.Following select p.ApplicationUser.Id.ToString()) .Append(loggedinUser.Id.ToString()); g个对象,为什么在Where中使用Following

Network

当然,您也可以执行var g = loggedinUser.Following .Append(loggedinUser); ,但这是不必要的搜索:

Where