【问题标题】:Get First GUID type value from List [closed]从列表中获取第一个 GUID 类型值 [关闭]
【发布时间】:2019-08-15 07:57:43
【问题描述】:

我有一个字符串列表,它可以容纳任何数据类型的数据,即

    [0]: ""
    [1]: "api"
    [2]: "Lookup"
    [3]: "user"
    [4]: "MapDesignation"
    [5]: "84e57c3c-51d2-4e4d-a7ae-db2ee088a3c6"

代码:

"/api/Lookup/user/MapDesignation/84e57c3c-51d2-4e4d-a7ae-db2ee088a3c6".Split('/')

现在我的要求是我需要从此列表中获取第一个 GUID 值。 该列表可以容纳多个 GUID 类型的值,但我只需要第一个。

谢谢

【问题讨论】:

  • "/api/Lookup/user/MapDesignation/84e57c3c-51d2-4e4d-a7ae-db2ee088a3c6".Split('/').OfType().First();我有这个,但是得到'System.InvalidOperationException',你能看看有什么遗漏
  • 您应该能够迭代然后在每个元素上使用 Guid.TryParse 来查看它是否是有效的 GUID。 docs.microsoft.com/en-us/dotnet/api/…
  • @Sean OP 的问题是模棱两可的:他们声明他们有一个对象类型列表(即List<object>)并且想要采用第一个Guid
  • ..但实际上从您的第一条评论来看,这似乎真的是一个字符串列表。你得澄清一下!
  • @Sean 你给出的解决方案工作,尝试了 actionContext.Request.RequestUri.AbsolutePath.Split('/').Where(d => Guid.TryParse(d.ToString(), out val )).FirstOrDefault()

标签: c# arrays linq arraylist guid


【解决方案1】:

假设您在某种字符串列表中获得了数据:

List<string> data = ....;
string value = data.Where(d => Guid.TryParse(d, out var _).FirstOrDefault();

如果列表中没有有效的 guid,则 value 将是 null

如果您的列表是对象列表,那么您可以尝试将值转换为字符串然后解析:

List<object> data = ....;
var value = data.Where(d => Guid.TryParse(d.ToString(), out var _).FirstOrDefault();

如果列表包含一系列类型,其中可能包括Guid,那么您可以使用OfType

List<object> data = ...
var guid = data.OfType<Guid>().FirstOrDefault();

在这种情况下,如果没有 guid,则 guid 将设置为 Guid.Empty

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-11
    • 2011-01-03
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多