C# 在linq中使用if-else创建字符串文本

C# 在linq中使用if-else创建字符串文本,c#,linq,if-statement,C#,Linq,If Statement,我希望在linq中的单个字符串中获得多个if-else查询的结果,由于前面编写的方法,我可以获得我想要的结果,但我希望将其包括在linq查询中 我保留了一行中4列的数据。我可以用其中一行操作,但我想从相邻的4行接收数据 Linq代码: select new{ Ists = kart.FirstOrDefault(x => x.Id == sk.id) != 8 ? kart.FirstOrDefault(x => x.Id == sk.id).ist1

我希望在linq中的单个字符串中获得多个if-else查询的结果,由于前面编写的方法,我可以获得我想要的结果,但我希望将其包括在linq查询中

我保留了一行中4列的数据。我可以用其中一行操作,但我想从相邻的4行接收数据

Linq代码:

select new{
   Ists = kart.FirstOrDefault(x => x.Id == sk.id) != 8
      ? kart.FirstOrDefault(x => x.Id == sk.id).ist1
      : ""
};
输入示例:

ist1=ISTANBUL, ist2=KONYA, ist3=ANKARA, ist4=IZMIR
我想要的输出:

Ists= ISTANBUL + KONYA + ANKARA + IZMIR
根据您提供的示例,是否可以尝试使用正则表达式而不是Linq来匹配所有部分

  using System.Linq; // <- To query Regex.Matches
  using System.Text.RegularExpressions;

  ...

  string data = @"ist1=ISTANBUL, ist2=KONYA, ist3=ANKARA, ist4=IZMIR";

  // To obtain "ists" I've used "^[A-Za-z]+" pattern
  // If "ists" is constant you can drop it and put 
  // string result = "ists= " + string.Join(...  
  string result = $"{Regex.Match(data, "^[A-Za-z]+")}s= " + string.Join(" + ", Regex
    .Matches(data, @"(?<=\=\s*)\p{L}+")
    .Cast<Match>()
    .Select(match => match.Value));

  Console.Write(result);

我做了所有可能的自定义方法

string Find(int hammaddeId)
        {
            var str = "";
            var hammadde = hammaddeler.FirstOrDefault(x => x.id == hammaddeId);
            if (hammadde.istasyon1 != 8)
            {
                str += "- " + istasyonlar.FirstOrDefault(x => x.id == hammadde.istasyon1).istasyonadi;
            }
            if (hammadde.istasyon2 != 8)
            {
                str += "- " + istasyonlar.FirstOrDefault(x => x.id == hammadde.istasyon2).istasyonadi;
            }
            if (hammadde.istasyon3 != 8)
            {
                str += "- " + istasyonlar.FirstOrDefault(x => x.id == hammadde.istasyon3).istasyonadi;
            }
            if (hammadde.istasyon4 != 8)
            {
                str += "- " + istasyonlar.FirstOrDefault(x => x.id == hammadde.istasyon4).istasyonadi;
            }
            return str;
        }

你看过Linq的《代码》了吗?如果我理解正确,您希望一次从列表中获取4条记录?我不清楚您想要实现什么,因为在您的条件下,
FirstOrDefault
似乎返回一个整数,然后您尝试取消引用它。A将使帮助您变得更容易——以及您的数据源的详细信息。(内存中?使用EF核心的SQL?其他什么?)感谢您的回答,列表中的一行中有4列。我想在每一行的4列中并排获取数据。同样,a将使您更容易获得帮助。(我不清楚“并排”是什么意思,或者所涉及的数据类型是什么,等等)
string Find(int hammaddeId)
        {
            var str = "";
            var hammadde = hammaddeler.FirstOrDefault(x => x.id == hammaddeId);
            if (hammadde.istasyon1 != 8)
            {
                str += "- " + istasyonlar.FirstOrDefault(x => x.id == hammadde.istasyon1).istasyonadi;
            }
            if (hammadde.istasyon2 != 8)
            {
                str += "- " + istasyonlar.FirstOrDefault(x => x.id == hammadde.istasyon2).istasyonadi;
            }
            if (hammadde.istasyon3 != 8)
            {
                str += "- " + istasyonlar.FirstOrDefault(x => x.id == hammadde.istasyon3).istasyonadi;
            }
            if (hammadde.istasyon4 != 8)
            {
                str += "- " + istasyonlar.FirstOrDefault(x => x.id == hammadde.istasyon4).istasyonadi;
            }
            return str;
        }