Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对同一对象使用不同ID查询数据库中的项_C#_Asp.net_.net_Asp.net Core - Fatal编程技术网

C# 对同一对象使用不同ID查询数据库中的项

C# 对同一对象使用不同ID查询数据库中的项,c#,asp.net,.net,asp.net-core,C#,Asp.net,.net,Asp.net Core,因此,我试图获取所有的“用户照片”,其中他们的“用户ID”==“FollowerId”,当存在多个“FollowerId”时,我会遇到一个问题,我需要知道如何使其适用于“FollowerId”列表,以便用户可以取回他们跟踪的所有“用户”的“用户照片” [HttpGet("u/{username}")] public async Task<IQueryable> GetSpecificFeed(string username) { var use

因此,我试图获取所有的“用户照片”,其中他们的“用户ID”==“FollowerId”,当存在多个“FollowerId”时,我会遇到一个问题,我需要知道如何使其适用于“FollowerId”列表,以便用户可以取回他们跟踪的所有“用户”的“用户照片”

    [HttpGet("u/{username}")]
    public async Task<IQueryable> GetSpecificFeed(string username)
    {
        var user = _context.Users.FirstOrDefault(x => x.Username == username);
        // Follower is the user that is being followed
        // Following is the user that is doing the following (so the current logged in user)

        var userId = user.Id;
        // This bit works and returns the correct userId

        var followerIds = _context.Follows.Where(x => x.FollowerId == userId);
        // This should return all of the 'FollowerIds' that the current user is following
        // This however doesn't do that, it just throws this error:
        // SQLite Error 1: 'no such column: x.UserId' (I don't know why)

        var feed = _context.UserPhotos.Where(x => x.UserId == userId);
        // This currently returns all of the 'UserPhotos' if their 'UserId' is equal to the 'UserId' 
        // (which is the id of the user that is logged in) -> This isn't what I want it to do
        // Once the 'followerIds' return the correct thing, it should then get the userPhotos where
        // The UserId == followerIds (followerIds will be an array, so it will have to check through
        // multiple values to get the whole 'feed'

        return feed;
    }
用户类(我删除了与本例不相关的属性)

这段代码显示了它应该如何工作,但它没有(这显示了我试图实现的目标)

[HttpGet(“u/{username}”)]
公共异步任务GetSpecificFeed(字符串用户名)
{
var user=\u context.Users.FirstOrDefault(x=>x.Username==Username);
//Follower是被跟踪的用户
//以下是正在执行以下操作的用户(因此是当前登录的用户)
var userId=user.Id;
var photos=_context.UserPhotos;
var followerIds=_context.followerd.Where(x=>x.followerIds==userId);
//获取当前用户所在用户的所有用户ID
//跟踪并将其放入“followerIds”
var feed=photos.Where(x=>x.UserId==followerIds);
//在“照片”中搜索“用户id”(用户的id)
//“已创建”匹配“followersIds”
回馈;
}

您应该首先启动sql查询。在您的案例中,可以使用ToList()实现此目的

[HttpGet("u/{username}")]
public async Task<IQueryable> GetSpecificFeed(string username)
{
    var user = _context.Users.FirstOrDefault(x => x.Username == username);

    var userId = user.Id;

    var followerIds = _context.Follows.Where(x => x.FollowerId == userId).ToList();

    var feeds = _context.UserPhotos.Where(x => followerIds.Contains( x.UserId ));

    return feeds;
 }
[HttpGet(“u/{username}”)]
公共异步任务GetSpecificFeed(字符串用户名)
{
var user=\u context.Users.FirstOrDefault(x=>x.Username==Username);
var userId=user.Id;
var followerIds=_context.followerd.Where(x=>x.followerIds==userId.ToList();
var feeds=_context.UserPhotos.Where(x=>followerIds.Contains(x.UserId));
回馈;
}

您应该首先启动sql查询。在您的案例中,可以使用ToList()实现此目的

[HttpGet("u/{username}")]
public async Task<IQueryable> GetSpecificFeed(string username)
{
    var user = _context.Users.FirstOrDefault(x => x.Username == username);

    var userId = user.Id;

    var followerIds = _context.Follows.Where(x => x.FollowerId == userId).ToList();

    var feeds = _context.UserPhotos.Where(x => followerIds.Contains( x.UserId ));

    return feeds;
 }
[HttpGet(“u/{username}”)]
公共异步任务GetSpecificFeed(字符串用户名)
{
var user=\u context.Users.FirstOrDefault(x=>x.Username==Username);
var userId=user.Id;
var followerIds=_context.followerd.Where(x=>x.followerIds==userId.ToList();
var feeds=_context.UserPhotos.Where(x=>followerIds.Contains(x.UserId));
回馈;
}

您可以参考以下代码:

    [HttpGet("u/{username}")]
    public async Task<IQueryable> GetSpecificFeed(string username)
    {
        var user = _context.Users.FirstOrDefault(x => x.Username == username);
        var userId = user.Id;
        var photos = _context.UserPhotos;
        var followerIds = _context.Follows.Where(x => x.FollowerId == userId).Select(x => x.FollowingId).ToList();
        var feeds = _context.UserPhotos.Where(x => followerIds.Contains(x.UserId));
        return feeds;
    }
[HttpGet(“u/{username}”)]
公共异步任务GetSpecificFeed(字符串用户名)
{
var user=\u context.Users.FirstOrDefault(x=>x.Username==Username);
var userId=user.Id;
var photos=_context.UserPhotos;
var followerIds=_context.followerd.Where(x=>x.followeridid==userId)。选择(x=>x.followerIds.ToList();
var feeds=_context.UserPhotos.Where(x=>followerIds.Contains(x.UserId));
回馈;
}

您可以参考以下代码:

    [HttpGet("u/{username}")]
    public async Task<IQueryable> GetSpecificFeed(string username)
    {
        var user = _context.Users.FirstOrDefault(x => x.Username == username);
        var userId = user.Id;
        var photos = _context.UserPhotos;
        var followerIds = _context.Follows.Where(x => x.FollowerId == userId).Select(x => x.FollowingId).ToList();
        var feeds = _context.UserPhotos.Where(x => followerIds.Contains(x.UserId));
        return feeds;
    }
[HttpGet(“u/{username}”)]
公共异步任务GetSpecificFeed(字符串用户名)
{
var user=\u context.Users.FirstOrDefault(x=>x.Username==Username);
var userId=user.Id;
var photos=_context.UserPhotos;
var followerIds=_context.followerd.Where(x=>x.followeridid==userId)。选择(x=>x.followerIds.ToList();
var feeds=_context.UserPhotos.Where(x=>followerIds.Contains(x.UserId));
回馈;
}

例外情况“无此类列”与型号声明有关。尝试调查Follow类并确定其关系。我已经这样做了,并且添加了它们之间的关系,但看不出我做错了什么,我编辑了问题“无此类列”的例外与模型声明相关。试着调查下面的课程并确定它的关系。我已经这样做了,我已经添加了它们之间的关系,但看不出我做错了什么,我编辑了问题。这很好,谢谢,不过我有一个问题。你把“包含”放进去,不是吗;这意味着它可能返回错误的结果,例如,如果followersid包含“1”,它是否会混淆并返回错误的结果,因为followerrid包含“1”,因此它可能返回followerrid为“10”的结果(或其中包含1的任何数字)aswell@chumberjosh,你根本不需要担心。下面的代码返回由不同ID组成的列表集合。此处包含用于判断当前x.UserId是否等于以下数据集合之一。它用作
int
数据来判断它们是否相等。不用确定字符串中是否包含字符。这非常感谢,不过我有一个问题。你把“包含”放进去,不是吗;这意味着它可能返回错误的结果,例如,如果followersid包含“1”,它是否会混淆并返回错误的结果,因为followerrid包含“1”,因此它可能返回followerrid为“10”的结果(或其中包含1的任何数字)aswell@chumberjosh,你根本不需要担心。下面的代码返回由不同ID组成的列表集合。此处包含用于判断当前x.UserId是否等于以下数据集合之一。它用作
int
数据来判断它们是否相等。而不是确定字符串中是否包含字符。
[HttpGet("u/{username}")]
public async Task<IQueryable> GetSpecificFeed(string username)
{
    var user = _context.Users.FirstOrDefault(x => x.Username == username);

    var userId = user.Id;

    var followerIds = _context.Follows.Where(x => x.FollowerId == userId).ToList();

    var feeds = _context.UserPhotos.Where(x => followerIds.Contains( x.UserId ));

    return feeds;
 }
    [HttpGet("u/{username}")]
    public async Task<IQueryable> GetSpecificFeed(string username)
    {
        var user = _context.Users.FirstOrDefault(x => x.Username == username);
        var userId = user.Id;
        var photos = _context.UserPhotos;
        var followerIds = _context.Follows.Where(x => x.FollowerId == userId).Select(x => x.FollowingId).ToList();
        var feeds = _context.UserPhotos.Where(x => followerIds.Contains(x.UserId));
        return feeds;
    }