【问题标题】:Get Linq Value Using Two SQL Tables使用两个 SQL 表获取 Linq 值
【发布时间】:2014-11-13 07:34:42
【问题描述】:

我无法编写正确的 LINQ 语法。

我有一个名为 eloLists 的表,其值为 ID (int) 和 Rank (string),还有一个名为 Users 的表,其值为 elo (int)。

我试图通过获取用户对应的elo 来获取用户的rank,这与ID 列匹配。

所以我有一行像

Temp = Temp + person.summonerID + "," + person.name + "," + person.summoner + "," + myQuery + ",";

我在哪里尝试使用 myQuery 来获得这个答案。我的尝试是这样的,但我迷路了..

var myQuery = db.eloLists.Select(x => x.rank.Where(x.ID = db.Users.Select(y => y.elo))); 我不确定这是否正确。

编辑:

var myQuery = db.eloLists.Where(x => db.Users.Select(y => y.elo).Contains(x.ID)).Select(e => e.rank);

    foreach (var person in db.Users)
    {
        Temp = Temp + person.summonerID + "," + person.name + "," + person.summoner + "," + myQuery + ",";
    }

【问题讨论】:

    标签: c# sql-server linq


    【解决方案1】:

    创建一个返回字符串并接受用户对象的方法。

    public string getrank(User person) 
    {
        var myQuery = db.eloLists.FirstOrDefault(x => x.ID == person.elo));
    
        if(myQuery == null) return string.Empty;
    
        return myQuery.Rank;
    } 
    

    然后使用:

    foreach (var person in db.Users)
    {
        Temp = Temp + person.summonerID + "," + person.name + "," + person.summoner + "," + getrank(person)  + ",";
     }
    

    【讨论】:

    • 那我怎么把它放到 Temp 字符串中呢?只是我的查询?还是我需要传递一些东西?
    • MyQuery 返回排名集合。您需要将其放入 for 循环并生成一个逗号分隔的字符串,然后将其放入您的第一条语句中。
    • 好的。您的更新将显着改变答案。我会尽快更新我的答案。
    • String.Join 可能比循环更干净一些
    猜你喜欢
    • 2013-10-09
    • 1970-01-01
    • 2015-04-19
    • 2015-12-28
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多